面试经典150题 day4
- 题目来源
- 我的题解
- 方法一 双指针
题目来源
力扣每日一题;题序:80
我的题解
方法一 双指针
left和right分别指向相同元素的左右边界,count记录重复元素的个数,index记录最终数组的长度。
当元素没有重复时,只需要将nums[index]=nums[left];
当元素重复时,需要两次nums[index++]=nums[left++];
时间复杂度:O(n)
空间复杂度:O(1)
public int removeDuplicates(int[] nums) {int left=0,right=1,n=nums.length;int count=1;int index=0;while(right<n){while(right<n&&nums[left]==nums[right]){count++;right++;}if(count==1){nums[index++]=nums[left++];}else{nums[index++]=nums[left++];nums[index++]=nums[left++];}left=right;right++;count=1;}if(left<n)nums[index++]=nums[left++];return index;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~