题目
思路
在原来的数组进行修改,要考虑的是如何保证原来的数组不被破坏,双指针可以很好的解决这一个问题。一个向后面走,不一样就推着满指针向前走,并修改数组的值。
双指针小总结
双指针常用在线性的数据结构中如链表和数组。常用的有对撞指针和快慢指针。
快慢指针可求
- 链表中环的长度
- 链表中环的起点
- 链表是否有环
滑动窗口
两个指针,一前一后组成滑动窗口。过程中还需要判断窗口是否达到了要求,窗口增加和窗口缩减。
碰撞指针
两个指针从左右两端开始向中间集合,可以用来翻转一下字符串。(待补充)
代码
class Solution {
public int removeDuplicates(int[] nums) {
int fast=1,slow=0;
while(fast<nums.length){
if(nums[fast]!=nums[slow]){
slow = slow + 1;
nums[slow]=nums[fast];
}
fast = fast +1;
}
return slow+1;
}
}