面试经典150题 day3
题目来源
我的题解
方法一 双指针
使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。
时间复杂度 :O(n)
空间复杂度:O(1)
java
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;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~