1. 程式人生 > >【LeetCode】 27 移除元素

【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;
    }
}