当前位置:   article > 正文

【算法】奇妙双指针移除数组元素_双指针移除元素

双指针移除元素

7月5日,今天是我在CSDN创作的第一天,在今后的日子里,希望可以多多努力创作出更多好的文章


力扣原题: link

题目:
题目详情
例子:
请添加图片描述
请添加图片描述

前言

许多小伙伴在解这题的时候,都会直接采用暴力解法,即

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int size=nums.size();
        for(int i=0;i<size;++i)
        {
            if(val==nums[i])     //如果在数组中查找到需要目标元素
            {
                for(int j=i+1;j<size;++j)
                {
                    nums[j-1]=nums[j];      //数组元素前移
                }
                i--;        //因为下标i以后的数值都往后移动了一位,所以i也需移动
                size--;     //数组个数-1
            }
        }
        return size;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

从双层循环就可以看出这很暴力,但是大家有没有想过如何使用一层for循环来实现呢,让解题变得高效又快速。接下来,就给小伙伴们讲讲这题如何用双指针来实现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/611513
推荐阅读
相关标签