能够找到问题的解法与把问题足够简化是天壤之别。比如我知道这题可以用贪心算法来解决,但是代码实现的过程中就走上了复杂的路,但是官方题解给的代码则相当简洁。这说明我思考的不够深入,导致化繁为简的能力不够强。
1. 题目
2. 分析
一道贪心题目。
3. 代码
class Solution:
def findMinArrowShots(self, points: List[List[int]]) -> int:
# 贪心算法
points = sorted(points, key = lambda x:x[0])
print(points)
idx = 0
cnt = 0
prob = idx + 1
while(idx < len(points) and prob < len(points)):
left, right = points[idx]
while(prob < len(points)):
next_left, next_right = points[prob]
# 如果下一个节点满足条件
if left <= next_left <= right:
# 更新
left = max(left, next_left)
right = min(right, next_right)
prob += 1
else:
# 更新 idx 的值
idx = prob
cnt+=1 # 计数结果
prob += 1
break
if idx < len(points):
cnt += 1
return cnt
上面这版代码的看着很复杂。