题解 | #牛群的协作#
牛群的协作
https://www.nowcoder.com/practice/c065b35c5cff41429edbd6484096d708
#from types import coroutine
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param cow_ranges int整型二维数组
# @return int整型
#
class Solution:
def minParallelAttacks(self , cow_ranges: List[List[int]]) -> int:
# write code here
if not cow_ranges:
return 0
if len(cow_ranges) == 1:
return 1
cow_ranges = list(sorted(cow_ranges))
attacks = 1
cow = cow_ranges[0]
for cow_range in cow_ranges:
if cow_range[0] <= cow[1]:
#这里是关键,攻击区间不能直接合并出最大区间,因为这样一个区间里可能会包含不相邻的子区间
#所以区间划分时应该选择较小的区间末端作为当前攻击区间的末端
cow[1] = min(cow[1], cow_range[1])
else:
attacks += 1
cow = cow_range
return attacks

