leetcode[27]Remove Element

问题:有了[1]的基础,给定一个数组nums和val,原地(in-place)去除所有等于val的元素,返回数组长度。[2]

//不能开辟额外空间。数组元素顺序可以改变。

输入:数组nums和val

输出:length

思路:使用两个pointer,一个遍历数组,另一个作为存放满足条件的元素的下标。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        if(nums.size()==0)
            return 0;
        int j=0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]!=val)
            {
                nums[j]=nums[i];
                j++;
            }
        }
        return j;
    }
};

solution[3]给了一个新的idea,把remove的元素放在数组末尾,相当于数组的长度减1. 这在remove的元素比较少时更有效率。

  1. https://blog.csdn.net/qq_22148493/article/details/87922719
  2. https://leetcode.com/problems/remove-element/
  3. https://leetcode.com/problems/remove-element/solution/
发布了56 篇原创文章 · 获赞 10 · 访问量 6835

猜你喜欢

转载自blog.csdn.net/qq_22148493/article/details/88088090