题目来源
力扣每日一题;题序:26
我的题解
方法一 双指针
使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。
时间复杂度:O(n)
空间复杂度:O(1)文章来源:https://www.toymoban.com/news/detail-850749.html
public int removeDuplicates(int[] nums) {
int left=0,right=1;
int n=nums.length;
if(n==1)
return n;
int count=0;
while(right<n){
//找到相同元素的左右边界
while(right<n&&nums[left]==nums[right])
right++;
//当前相同元素记录如最终的数组
count++;
left=right;
right++;
//只有left小于n时才会更新结果数组
if(left<n)
nums[count]=nums[left];
}
if(left<n)
count++;
return count;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~文章来源地址https://www.toymoban.com/news/detail-850749.html
到了这里,关于面试经典150题——删除有序数组中的重复项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!