快慢指針-leetcode-26

題目描述:

給定一個已經排序好的數組,刪除重複的元素,使每個元素只出現一次,並返回新的數組長度。

不要爲另一個數組分配額外的空間,必須採用 O(1) 額外內存複雜度的原地算法來解決這個問題。

示例 1:

輸入: nums = [1, 1, 2]

輸出: length=2, nums=[1,2]

解釋: 函數應該返回新的長度2,並且原數組nums的前兩個元素被修改爲1, 2。 不需要在乎我們返回新數

組的長度,因爲答案只是你應該在新的長度範圍內輸出新數組。

示例 2:

輸入: nums = [0,0,1,1,1,2,2,3,3,4]

輸出: length=5, nums=[0,1,2,3,4]

解釋: 函數應該返回新的長度5、並且原數組nums的前五個元素被修改爲0, 1, 2, 3, 和 4。 不能保留超過零

個重複項數字的數組,換句話說,對於nums中的重複項只出現一次的數字,將其不重複地填入新數組。

思路:快慢指針


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int removeDuplicates(int[] nums) {

        int slow = 0;
        int fast = 0;
        while(fast<nums.length){
            if(nums[fast]!=nums[slow]){
                slow++;
                nums[slow]=nums[fast];
            }
            fast++;
        }
        return ++slow;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章