题解 | #牛群的协作#
牛群的协作
https://www.nowcoder.com/practice/c065b35c5cff41429edbd6484096d708
- 题目考察的知识点 : 贪心算法
- 题目解答方法的文字分析:
- 将所有牛所在的范围按照右端点从小到大排序。然后使用变量 count 记录当前已经使用的特殊攻击数量。初始时先使用一个特殊攻击打败第一头牛,然后依次考虑剩余的所有牛。对于每个牛的范围 [left, right],如果 left > 当前已经被攻击的区域的右端点,说明这个牛是新的一组,需要使用另外一个特殊攻击来攻击它,并更新当前已经被攻击的区域的右端点为 right;否则,这个牛和前面的牛可以一起攻击,不需要使用新的特殊攻击,只需要更新当前已经被攻击的区域的右端点为 max(right, 当前已经被攻击的区域的右端点)。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param cow_ranges int整型二维数组 # @return int整型 # class Solution: def minParallelAttacks(self, cow_ranges: List[List[int]]) -> int: cow_ranges.sort(key=lambda x: x[1]) count = 0 prevX = float('-inf') #初始化为负无穷 for cow in cow_ranges: if cow[0] > prevX: count += 1 prevX = cow[1] return count
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路