当前位置:   article > 正文

LeetCode:27、力扣:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。_给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums

给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个
一、题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。题目链接
示例 1:
给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。。
  • 1
  • 2
  • 3
  • 4
  • 5
示例 2:
给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
二、题目分析:

1、使用两个指针,i和j
2、i负责遍历整个数组
3、j相当于表示的是新的下标
遍历数组
如果nums[i] == val时,i++,
如果nums[i] == val时,i++,

如果nums[i] != val时,需要把nums[i]元素放到nums[j]位置上

三、代码:
class Solution {
    public int removeElement(int[] nums, int val) {
        if(nums == null || nums.length == 0) {
            return 0;
        }
        //新的下标
        int j = 0;
        //遍历数组,判断nums数组里面的元素是否为val
        for(int i = 0;i < nums.length ;i ++){
            if(nums[i] != val) {
                nums[j] = nums[i];
                j++;
            } 
        }
        return j;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器7/article/detail/60457
推荐阅读
相关标签
  

闽ICP备14008679号