题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是就是给一个非负整数数组,每次可以选择其中一个子数组,并对其中的最小非负数置零,求将一个数组全部置零的最少操作次数。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
class Solution:
def minOperations(self, nums: List[int]) -> int:
ans = 0
st = [0]
for i,x in enumerate(nums):
while st and x < st[-1]:
st.pop()
ans += 1
if not st or x != st[-1]:
st.append(x)
return ans + len(st) - 1 # 这里的 1 指单调栈最前面的 0