一.解法
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
要點:雙指針
不要用新數(shù)組存台丛。
Python寒匙,C++鹊奖,Java都用雙指針法印蓖,i表示當(dāng)前位置势似,j去找第一個不等同nums[i]的位置,i++分瘦,注意到最后不要越界需要加一句判斷語句
二.Python實現(xiàn)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
answer=1
if(len(nums)==0):
return 0
if(len(nums)==1):
return 1
i=0
j=0
while(j<len(nums)-1):
while(nums[j]==nums[i]):
j+=1
if(j>len(nums)-1):
break;
if(j>len(nums)-1):
break
nums[i+1]=nums[j]
answer+=1
i+=1
return answer
三.C++實現(xiàn)
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int answer=1;
int i,j;
if(nums.size()==0) return 0;
if(nums.size()==1) return 1;
i=0;
j=0;
while(j<nums.size()-1){
while(nums[j]==nums[i]){
j++;
if(j>nums.size()-1) break;
}
if(j>nums.size()-1) break;
nums[i+1]=nums[j];
answer++;
i++;
}
return answer;
}
};
四.java實現(xiàn)
class Solution {
public int removeDuplicates(int[] nums) {
int answer=1;
int i,j;
if(nums.length==0) return 0;
if(nums.length==1) return 1;
i=0;
j=0;
while(j<nums.length-1){
while(nums[j]==nums[i]){
j++;
if(j>nums.length-1) break;
}
if(j>nums.length-1) break;
nums[i+1]=nums[j];
answer++;
i++;
}
return answer;
}
}