LeetCode 26. Remove Duplicates from Sorted Array
給一個排序過的陣列,移除重複的值,每個元素只能留下一個。
不能使用其他的陣列空間,必需在本來的陣列中操作。
備註:直接修改輸入的陣列,空間複雜度應為O(1)
範例: [1,1,2] 去除重複的1之後,剩下[1,2],回傳陣列的長度2。
跟 LeetCode 283. Move Zeroes 很像,差別在於283移除的是0,這題移除的是重複的數字
時間複雜度:O(N)
空間複雜度O(1)
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int count = 1;
for(int i=0;i<nums.size();i++){
if(nums[count-1] != nums[i]){
nums[count] = nums[i];
count++;
}
}
return count;
}
};
移動不重複元素至陣列開頭
Step1.紀錄要改動的陣列位置 index
Step2.若當前元素跟前一個元素相比值不同,則代表這是出現的第一個元素
Step3.陣列開頭的第一個元素一定是新的元素
Ref:
https://cppsecrets.com/users/1559211698111109981081015450575064103109971051084699111109/C00-Program-to-Remove-Duplicates-from-Sorted-Array.php
https://clay-atlas.com/blog/2021/02/07/leetcode-cn-26-remove-duplicates-from-sorted-array-solution/
https://knightzone.studio/2018/10/21/3919/leetcode%EF%BC%9A26-remove-duplicates-from-sorted-array/
https://www.cnblogs.com/grandyang/p/4329128.html
https://hackmd.io/@Zero871015/SyVXfGv3E?type=view
https://ithelp.ithome.com.tw/articles/10213266
留言
張貼留言