大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

本题考察的知识点是如何在原数组上进行元素移除,同时要求空间复杂度为 O(1)。

题目解答方法的文字分析

给定一个整数数组 nums,表示每头牛的位置坐标。还有一个整数 val 表示牧犬发出的信号。

我们的任务是移除数组中与 val 相同的元素,并返回移动后的数组以及剩余元素数量。

具体步骤如下:

  1. 初始化变量 count 为 0,表示剩余元素的数量。
  2. 遍历数组 nums,对于每个元素 nums[i],如果与 val 不相等,则将 nums[count] 设为 nums[i],同时增加 count
  3. 返回 count,即剩余元素的数量。

举例说明:假设给定数组为 nums = [3, 5, 3, 2, 4, 3]val = 3

  • 初始化 count = 0
  • 遍历数组,遇到元素与 val 不相等时,将其移动到位置 count,同时增加 count
  • 最后得到剩余元素为 [5, 2, 4],返回剩余元素数量 3。

本题解析所用的编程语言 (C++)

本题解析所用的编程语言是 C++。

完整且正确的编程代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param val int整型 
     * @return int整型
     */
    int remove_cows(vector<int>& nums, int val) {
        int count = 0; // 剩余元素的数量
        
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] != val) {
                nums[count] = nums[i]; // 移动元素到正确的位置
                count++; // 增加剩余元素的数量
            }
        }
        
        return count; // 返回剩余元素的数量
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!