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

草原上的牛群分布

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
     public int remove_duplicates_v3 (int[] nums) {
        int n = nums.length;
        if(n==0){
            return 0;
        }
        int count = 1;
        int freq = 1;

        for (int i = 1; i < n; i++) {
            if (nums[i] == nums[i - 1]) {
                freq++;
            } else {
                freq = 1;
            }

            if(freq > 3) {
                continue;
            }

            nums[count] = nums[i];
            count++;
        }

        return count;
    }
}

本题知识点分析:

1.数组遍历

2.数学模拟

本题解题思路分析:

1.count是计数器 freq是频率计数器 count表示重新分布后的数组长度 freq表示当前位置上牛群的数量

2.如果元素与前一个相同,频率+1,否则频率置为1,因为不同元素,至少是一个频率,如果freq大于3,说明数量超出限制,跳过该位置,如果freq不超过3,把当前位置元素赋值到新的位置count上,然后count++作为一个慢指针,而i作为一个快指针必须++。

关键点:count什么时候不加,什么时候不做赋值操作,就是牛群数量超过限制的时候,使用continue完美解决

本题使用编程语言: Java

高频面试算法题解 文章被收录于专栏

高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!

全部评论

相关推荐

点赞 评论 收藏
分享
08-15 01:16
Python
Java小萌新新萌小...:照片不用整这么大的 而且你的照片截歪了 你想找专业对口的 那普通话证写在这里其实没有什么必要 就是看着内容多点 而且里面字体大小也不一样 修改一下排版 有很多空间可以再利用一下 字大一点 不然现在这样观感不太好 再就是项目好好优化一下 加油
点赞 评论 收藏
分享
shanhai1:第一份实习挺看运气的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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