题解 | #草原上的牛群#

草原上的牛群

https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90

考察的知识点:双指针;

解答方法分析:

  1. 首先,在给定的整型向量nums中,定义两个指针:lastIndex和i。lastIndex表示已经遍历过的不同元素的最后位置,i表示当前遍历的元素的位置。
  2. 初始化变量count为1,表示至少有一个不同的元素。
  3. 在循环中,从数组的第二个元素开始遍历(i从1开始),最后一个元素(i < n)。
  4. 每次遍历时,判断位置的元素(nums[i])是否与已经遍历过的不同元素的最后位置(nums[lastIndex])相等。如果相等,则说明当前元素与之前的元素相同,不计入不同元素的个数。如果不相等,则将当前元素放入不同元的最后位置(nums[++lastIndex] = nums[i]),并将count的值加1,表示出现了一个新的不同元素。
  5. 循环结束后,返回count作为不同元素的个数。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型
     */
    int remove_duplicates(vector<int>& nums) {
        int n = nums.size();
        if (n == 0) return 0;

        int count = 1;
        int lastIndex = 0;
        for (int i = 1; i < n; i++) {
            if (nums[i] != nums[lastIndex]) {
                nums[lastIndex] = nums[i];
                count++;
            }
        }
        return count;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-18 18:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务