从零开始的LC刷题(9): Remove Element

原题写的挺绕的其实就是从一列数中删除某些元素,要求使用原地算法,就是直接替换数组元素,原理就是两个pointer xy,y碰到非目标元素就将个元素的值赋给x,结果如下:

Success

Runtime: 4 ms, faster than 100.00% of C++ online submissions for Remove Element.

Memory Usage: 8.5 MB, less than 100.00% of C++ online submissions for Remove Element.

代码:

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

当然也可以设置头尾两个指针,结果如下:

Success

Runtime: 4 ms, faster than 100.00% of C++ online submissions for Remove Element.

Memory Usage: 8.5 MB, less than 100.00% of C++ online submissions for Remove Element.

代码:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
    int i = 0;
    int n = nums.size();
    while (i < n) {
        if (nums[i] == val) {
            nums[i] = nums[n - 1];
            n--;
        } else {
            i++;
        }
    }
    return n;
    }
};

猜你喜欢

转载自blog.csdn.net/cyr429/article/details/89490541
今日推荐