給定一個排序數(shù)組享幽,你需要在原地刪除重復(fù)出現(xiàn)的元素遵堵,使得每個元素只出現(xiàn)一次位隶,返回移除后數(shù)組的新長度。
不要使用額外的數(shù)組空間俭茧,你必須在原地修改輸入數(shù)組**并在使用 O(1) 額外空間的條件下完成咆疗。
示例 1:
給定數(shù)組 nums = [1,1,2],
函數(shù)應(yīng)該返回新的長度 2, 并且原數(shù)組 nums 的前兩個元素被修改為 1, 2。
你不需要考慮數(shù)組中超出新長度后面的元素母债。
示例 2:
給定 nums = [0,0,1,1,1,2,2,3,3,4],
函數(shù)應(yīng)該返回新的長度 5, 并且原數(shù)組 nums 的前五個元素被修改為 0, 1, 2, 3, 4午磁。
你不需要考慮數(shù)組中超出新長度后面的元素。
說明:
為什么返回數(shù)值是整數(shù)毡们,但輸出的答案是數(shù)組呢?
請注意迅皇,輸入數(shù)組是以“引用”方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對于調(diào)用者是可見的衙熔。
你可以想象內(nèi)部操作如下:
// nums 是以“引用”方式傳遞的登颓。也就是說,不對實參做任何拷貝
int len = removeDuplicates(nums);
// 在函數(shù)里修改輸入數(shù)組對于調(diào)用者是可見的红氯。
// 根據(jù)你的函數(shù)返回的長度, 它會打印出數(shù)組中該長度范圍內(nèi)的所有元素框咙。
for (int i = 0; i < len; i++) {
??System.out.println(nums[i]);
}
答案
class Solution {
public int removeDuplicates(int[] nums) {
int index = 0;
for(int i = 0; i < nums.length; i++){
if(nums[index] < nums[i]){
nums[++index] = nums[i];
continue;
}
}
return index + 1;
}
}