前言
努力从今天开始成功从零开始 只要你还愿意努力世界就会给你惊喜
本章的内容是力扣每日随机一题的部分方法的解析
提示:以下是本篇文章正文内容,下面案例可供参考
26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
1.更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
2.返回 k 。
链接
26.删除有序数组中的重复项题链接link
方法一:三指针
时间复杂度O(N)
空间复杂度O(1)
int removeDuplicates(int* nums, int numsSize) { int src1=0; int src2=1; int dest=0; while(src2<numsSize) { if(nums[src1]!=nums[src2]) { nums[dest++]=nums[src1]; src1=src2; src2++; } else { src2++; } } nums[dest++]=nums[src1]; return dest; }
方法二:双指针
时间复杂度O(N)
空间复杂度O(1)
int removeDuplicates(int* nums, int numsSize) { int src=1; int dest=0; while(src<numsSize) { if(nums[src]==nums[dest]) { src++; } else { nums[++dest]=nums[src++]; } } return dest+1; }
总结
Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧。