【LeetCode】 27 移除元素

在这里插入图片描述


解题思路:
1 最直接的,对数组内等于val的值进行处理,令其后的元素依次覆盖它,直到数组尾。
2 反向思维,反正都要遍历一遍数组,直接将不等于val的元素覆盖掉数组内的元素,并记录长度值即可。

代码(直接):

class Solution {
    public int removeElement(int[] nums, int val) {
        int length = nums.length;
        
        for (int i = 0;i < length;i++){
             
            if (nums[i] == val){
                length--;
                
                for (int j = i;j < nums.length - 1;j++){
                    nums[j] = nums[j+1];
                }
                i--;
            }
            
            
        }
        
        return length;
    }
}

代码(反向):

class Solution {
    public int removeElement(int[] nums, int val) {
        int i = 0;
        for (int j = 0; j < nums.length; j++) {
            if (nums[j] != val) {
                nums[i] = nums[j];
                i++;
            }
        }
        return i;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36269372/article/details/84782756