算法day2 移除元素

题目描述

思路:

这里主要介绍的是一种采取快慢双指针的思路。我们可以设置快指针fast来获取数组的元素,慢指针slow来获取数组的位置。这样我们采用fast指针的循环对整个数组进行遍历,当当前的fast指向的元素不等于目标元素val时,我们就将fast指向的元素更新到slow指向的位置,随后fast与slow后移;当相等时,我们依旧后移fast,但不后移slow,因为这个位置在此轮未赋值,直到fast遍历完成后,我们返回slow指针即可。

代码如下。

 int removeElement(vector<int>& nums, int val) {
    //这里是采用了快慢双指针,快指针来获得元素,慢指针来获取要更新元素的位置
    int fast = 0;
    int slow = 0;

    int len = nums.size();
    for(fast;fast<len;fast++){   
        if( nums[fast] != val ){    //只要不等于目标元素,我们就更新fast指向元素的数据到slow指向的位置
             nums[slow] = nums[fast];
             slow++; 
        }
    }
    return slow;
}

时间复杂度:O(n)
空间复杂度:O(1)

END

posted on 2025-04-06 15:10  sakura430  阅读(8)  评论(0)    收藏  举报