题解 | #牛群的协作#

牛群的协作

https://www.nowcoder.com/practice/c065b35c5cff41429edbd6484096d708

  • 题目考察的知识点 : 贪心算法
  • 题目解答方法的文字分析:
  1. 将所有牛所在的范围按照右端点从小到大排序。然后使用变量 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题的解法思路

全部评论

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
求实习的小白1213:华科去这 你是真敢去啊
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务