本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识!
目录:
1. 开篇例题:27. 移除元素
2. 题解参考
3. 题解思路
4. 相关题
[ - - 4.1 26. 删除有序数组中的重复项 ]
[ - - 4.1 283. 移动零 ]
5. 相关题题解及简要思路
- - 5.1 26. 删除有序数组中的重复项
- - 5.1 283. 移动零
1. 开篇例题:27. 移除元素
例题:点击直飞
2. 题解参考
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int j = 0; // j:慢指针
for(int i = 0;i<nums.size();i++){ // i:快指针
if(nums[i] != val){
nums[j++] = nums[i];
}
}
return j;
}
};
3. 题解思路
步骤:文章来源:https://www.toymoban.com/news/detail-458927.html
- 分别定义快慢指针,一般慢指针指向首元素,快指针视情而定。
- 本题中快指针探路,只要快指针指向值是指定值:则不执行
nums[j++] = nums[i]; 实现元素的逻辑删除【数组中即:使用后续元素覆盖前驱元素】
4. 相关题
26. 删除有序数组中的重复项
283. 移动零文章来源地址https://www.toymoban.com/news/detail-458927.html
5. 相关题题解及简要思路
26. 删除有序数组中的重复项
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int res = 0; // res:慢指针
for(int i = 1;i<nums.size();i++){ // i:快指针
// 此处当且仅当快指针指向值不等于慢指针指向值时,才庚戌慢指针
if(nums[i] != nums[res]){
nums[++res] = nums[i];
}
}
return res+1;
}
};
283. 移动零
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int j = 0; // j:慢指针
for(int i = 0;i<nums.size();i++){ // i:快指针
if(nums[i] != 0){
nums[j++] = nums[i];
}
}
// 结合题意处理剩余元素
for(;j<nums.size();j++){
nums[j] = 0;
}
}
};
到了这里,关于算法刷题营【Day1】:: 27. 移除元素:快慢指针在顺序表中的应用与相关刷题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!