双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,
- 对于数组,指两个变量在数组上相向移动解决的问题;
- 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。
双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题,让我们开始学习双指针算法之旅吧。
1. 移除元素
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int j=nums.size()-1;
for(int i=j;i>=0;i--){
if(nums[i]==val){
nums[i] = nums[j];
j--;
}
}
return j+1;
}
};