题解 | #草原上的牛群分布#
草原上的牛群分布
https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a
- 题目考察的知识点 : 数组如何去重,双指针的使用
- 题目解答方法的文字分析:
使用双指针方法来实现,在遍历整个数组时,维护一个指针 i 表示当前位置,以及一个计数器 count 表示当前位置上的牛群数量。如果当前位置与前一个位置相同,则将计数器加 1;否则,更新指针并将计数器重置为 1。如果发现某个位置上的牛群数量超过了 3 头,则需要将多余的牛群移到后面的位置。
具体来说,我们可以使用另一个指针 j 来表示下一个可用的位置。当 count 小于等于 3 时,将当前位置的元素复制到 j 所在的位置,并将 i 和 j都向右移动一位;否则,只将 i 向右移动一位,而将 j 留在原地等待后续的元素。最后,返回的长度应该为指针 j 的位置,因为它指向的是可用的下一个位置
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型 # class Solution: def remove_duplicates_v3(self, nums: List[int]) -> int: if len(nums) == 0: return 0 i = 0 # 指向数组中当前牛群位置 count = 1 # 当前位置上的牛群数量 for j in range(1, len(nums)): if nums[j] == nums[j - 1]: # 如果当前位置与前一个位置相同 if count < 3: # 如果当前位置上的牛群数量未满 3 头,则将牛群移动到数组中 i += 1 nums[i] = nums[j] count += 1 else: # 如果当前位置与前一个位置不相同 # 将牛群移动到数组中,并重置计数器 i += 1 nums[i] = nums[j] count = 1 # 返回重新分布的数组长度 return i + 1
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路