初级算法之数组——删除排序数组中的重复项
题目描述
代码注释
int removeDuplicates(int* nums, int numsSize){
if(numsSize==0) return 0;//数组为空
int i=0;
for(int j = 1;j<numsSize;j++){
/*当i所指与j所指不同时,i移向下一位,
并把j所指的值赋给i位,相同时,i不动,
j继续向后探索寻找不重复的值*/
if(nums[i]!=nums[j]){
i++;
nums[i]=nums[j];
}
}
return i+1;
}
提交结果如下:
反思心得
最开始没有考虑到数组为空的情况,没有第一行代码所以会提交不通过orz,,,看了评论发现用python逆序删除很有意思,代码如下:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
for i in range(len(nums) - 1, 0, -1):
if nums[i] == nums[i - 1]:
del nums[i]
return len(nums)
#作者:xuanli
#链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/?discussion=GI58ZK
#来源:力扣(LeetCode)
#著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
提交结果如下,python运行就是会慢一些,消耗也多一些。