网站建设宣传图ps,宿迁做网站公司,河北高端网站设计,linux wordpress 安装移除元素 27. 移除元素题目#xff1a;[移除元素](https://leetcode.cn/problems/remove-element/description/)示例和提示#xff1a;解法#xff1a;1. 暴力解法 2. 快慢指针 27. 移除元素
题目#xff1a;移除元素 示例和提示#xff1a; 解法#xff1a;
1. 暴力解… 移除元素 27. 移除元素题目[移除元素](https://leetcode.cn/problems/remove-element/description/)示例和提示解法1. 暴力解法 2. 快慢指针 27. 移除元素
题目移除元素 示例和提示 解法
1. 暴力解法
//暴力解法
//实际上就是遍历数组找到需要删除的元素然后再嵌套一层循环将该元素后面的依次向前覆盖。
class Solution {
public:int removeElement(vectorint nums, int val) {//为了不让每次循环都调用size()函数:int size nums.size();//第一步遍历目标数组for(int i 0; i size; i){//找到需要删除元素的位置;if(nums[i] val){//删除元素从前向后遍历:for(int j i1; j size; j){nums[j-1] nums[j];}//这里有一个迭代器失效问题此时i指向原始数组中被删除元素的下一个位置外层循环末尾//还会使得i,没有判断就跳过了这个元素所以得i--;i--;size--;}}return size;}
};2. 快慢指针
//快慢指针法
//很酷很丝滑的解法快指针勇往无前的遍历慢指针负责将快指针指向位置的元素复制到自己指向的位置
//当快指针指向位置的元素需要删除时慢指针停止赋值直到快指针再次指向一个不需要删除的元素的位置。class Solution {
public:int removeElement(vectorint nums, int val) {int fastPoit 0;int slowPoit 0;int size nums.size();for( ; fastPoit size; fastPoit){if(nums[fastPoit] ! val){nums[slowPoit] nums[fastPoit];slowPoit;}}//slowPoit此时的指向正是新数组末尾的下一个位置因为slowPoit//是放在赋值最后执行的所以刚好也就是新长度return slowPoit;}
};创作不易你的点赞和关注都是对我莫大的鼓励再次感谢您的观看