題目描述:
給定一個已經排序好的數組,刪除重複的元素,使每個元素只出現一次,並返回新的數組長度。
不要爲另一個數組分配額外的空間,必須採用 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)