leetcode

27.移除元素

力扣链接

class Solution {
public:
    int removeElement(std::vector<int>& nums, int val) {
        int slow = 0;
        for (int fast = 0;fast<nums.size();fast++){
            if (nums[fast]!= val) nums[slow++] = nums[fast];
        }
        return slow;
    }
};
class Solution {
public:
    int removeElement(std::vector<int>& nums, int val) {
        int res = 0;
        // 如果在for循环内初始化,slow是局部变量 最后不能return slow;
        for (int fast = 0, slow = 0; fast < nums.size(); fast++){
            if (nums[fast] != val) nums[slow++] = nums[fast];
            res = slow;
        }
        return res;
    }
};

困惑为什么 fast =0 位置会影响结果

// 正确
class Solution {
public:
    int removeElement(std::vector<int>& nums, int val) {
        int slow, fast =0;
        for (slow=0; fast < nums.size(); fast++){
            if (nums[fast] != val) nums[slow++] = nums[fast];
        }
        return slow;
    }
};
// 错误
class Solution {
public:
    int removeElement(std::vector<int>& nums, int val) {
        int slow;
        for (int fast =0, slow=0; fast < nums.size(); fast++){
            if (nums[fast] != val) nums[slow++] = nums[fast];
        }
        return slow;
    }
};