題目描述
給定一個排序數組,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在 原地 修改輸入數組 並在使用 O(1) 額外空間的條件下完成。
example1:
input : [1,1,2]
output : [1,2]
note : 函數應該返回新的長度 2, 並且原數組 nums 的前兩個元素被修改爲 1, 2。
example2:
input : [0,0,1,1,1,2,2,3,3,4]
output : [0,1,2,3,4]
note : 函數應該返回新的長度 5, 並且原數組 nums 的前五個元素被修改爲 0, 1, 2, 3, 4。
解題思路
思路
雙指針遍歷,一個指針i用於遍歷數組,另一個指針len用於修改數組。
當前元素的值num[i]與其前一個元素的值num[i-1]不相等的時候,num[len]的值更新爲num[i],以此實現對數組的修改。
代碼(Java)
class Solution {
public int removeDuplicates(int[] nums) {
int len = 1;
for (int i = 1; i < nums.length; i++){ // 下標從1開始是爲了訪問i-1時防止出現溢出。
if (nums[i] != nums[i-1]){
nums[len ++] = nums[i];
}
}
return len;
}
}