給你一個有序陣列 nums
,請你原地 刪除重複出現的元素,使得出現次數超過兩次的元素只出現兩次 ,返回刪除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地修改輸入陣列 並在使用 O(1) 額外空間的條件下完成。
示例 1:
輸入:nums = [1,1,1,2,2,3]
輸出:5, nums = [1,1,2,2,3]
解釋:函式應返回新長度 length = 5, 並且原陣列的前五個元素被修改為 1, 1, 2, 2, 3。 不需要考慮陣列中超出新長度後面的元素。
示例 2:
輸入:nums = [0,0,1,1,1,1,2,3,3]
輸出:7, nums = [0,0,1,1,2,3,3]
解釋:函式應返回新長度 length = 7, 並且原陣列的前七個元素被修改為 0, 0, 1, 1, 2, 3, 3。不需要考慮陣列中超出新長度後面的元素。
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length <= 2) {
return nums.length;
}
//slow表示處理完成的陣列長度,fast表示掃描過的陣列長度
int fast = 2, slow = 2;
while(fast < nums.length) {
//最多出現兩次,所以將slow-2處的數與fast處的數進行比較
if(nums[slow-2] != nums[fast]) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
}