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

草原上的牛群分布

https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a?tpId=354&tqId=10587751&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D354

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public int remove_duplicates_v3 (int[] nums) {
        // write code here
        if (nums.length == 0) {
            return 0;
        }
        int count = 1;
        int num = 1;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i - 1] == nums[i]) {
                num ++;
            } else {
                num = 1;
            }
            if (num > 3) {
                continue;
            }
            nums[count] = nums[i];
            count ++;
        }
        return count;
    }
}

考察的知识点:

  1. 数组遍历和操作:通过遍历数组并对数组进行操作,重新分布牛群。
  2. 指针操作:使用指针来记录重新分布后的位置。
  3. 数组长度处理:返回重新分布后的数组长度。

解题思路分析:

这个问题要求重新分布给定升序排列的数组中的牛群,使得每个位置上的牛群数量不超过 3 头,并返回重新分布后的数组长度和数组本身。我们可以遍历数组并进行重新分布,使得每个位置上的牛群数量不超过 3 头。

一种方法是使用两个指针来遍历数组。一个指针用于遍历原始数组,另一个指针用于记录重新分布后的位置。我们从数组的第二个元素开始,比较当前元素与前一个元素是否相同,如果相同,则说明同一位置上的牛群数量增加了,我们就继续遍历;如果不相同,则说明需要将当前元素重新分布到新位置。由于每个位置最多只能有 3 头牛,所以我们可以保证在遍历过程中,重新分布后的位置不会超过 3 个。然后,我们将遍历到的元素放入重新分布后的位置,同时更新记录重新分布位置的指针。

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务