题解 | #草原上的牛群分布#

草原上的牛群分布

https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a

考察知识点:数组、双指针

题目分析:

使用left指针指向下一个要放入的位置,用right向后进行遍历,遍历到满足条件的元素就覆盖到left中。

当nums的元素个数大于2时,可以通过判断前一个数是否与当前数相同来判断是否将cnt加1。在这一判断之后,若满足题意条件,即连续的牛群个数不大于3,那么就将right指向的数覆盖到left中。因为第一个数一定满足条件,right可以从第二个数开始,覆盖时left也从第二个数开始。

所用编程语言:C++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int remove_duplicates_v3(vector<int>& nums) {
        // write code here
        int left = 0, right = 1;
        int cnt = 1;
        int size = nums.size();
        if (size == 0) return 0;
        while (right < size) {
            if (nums[right] == nums[right - 1]) {
                if (cnt < 3) {
                    nums[++left] = nums[right];
                    cnt++;
                }
            } else {
                nums[++left] = nums[right];
                cnt = 1;
            }
            right++;
        }
        return left + 1;
    }
};

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务