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

草原上的牛群分布

https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a?tpId=354&tqId=10587751&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354

一、知识点:

双指针

二、文字分析:

用双指针的方法,详解在代码注释中。

复杂度分析:该算法只对数组进行一次遍历,因此时间复杂度为 O(n),其中 n 是数组的长度。算法只使用了常数个额外变量,空间复杂度为 O(1)。

三、编程语言:

java

四、正确代码:

public class Solution {
    /**
     * 计算各个位置上牛群数量的有序分布
     *
     * @param nums int整型一维数组,表示牛群的位置数组
     * @return int整型,重新分布的数组的长度
     */
    public int remove_duplicates_v3(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int i = 0; // 指向数组中当前牛群位置
        int count = 1; // 当前位置上的牛群数量

        for (int j = 1; j < nums.length; j++) {
            if (nums[j] == nums[j - 1]) {
                // 如果当前位置与前一个位置相同
                if (count < 3) {
                    // 如果当前位置上的牛群数量未满 3 头,则将牛群移动到数组中
                    nums[++i] = nums[j];
                    count++;
                }
            } else {
                // 如果当前位置与前一个位置不相同
                // 将牛群移动到数组中,并重置计数器
                nums[++i] = nums[j];
                count = 1;
            }
        }

        // 返回重新分布的数组长度
        return i + 1;
    }
}
全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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