27. Remove Element

題目

Given an array nums and a value val, remove all instances of that value in-place and return the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

The order of elements can be changed. It doesn’t matter what you leave beyond the new length.

Example 1:

Given nums = [3,2,2,3], val = 3,

Your function should return length = 2, with the first two elements of nums being 2.
It doesn’t matter what you leave beyond the returned length.

Example 2:

Given nums = [0,1,2,2,3,0,4,2], val = 2,

Your function should return length = 5, with the first five elements of nums containing 0, 1, 3, 0, and 4.
Note that the order of those five elements can be arbitrary.
It doesn’t matter what values are set beyond the returned length.

解答

這道題的意思是,給我們一個數組,再給一個數字,讓我們將數組中不等於這個數字的數移到最前面,並返回長度。

思路
使用雙指針的思路,一個指針表示【下一個滿足條件的數應該放在什麼位置】,另一個指針用來遍歷。每遍歷到一個滿足條件的需要保留的數,就放在第一個指針的下標上。

class Solution {
    public int removeElement(int[] nums, int val) {
        int placeHere = 0;
         for (int j = 0; j < nums.length; j++) {
             if (nums[j] != val) {
                 nums[placeHere++] = nums[j];
             }
         }
        return placeHere;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章