→ oin1104: 屁眼 11/10 20:44
3542. Minimum Operations to Convert All Elements to Zero
思路:
就用遞增monotonic stack
每次要把stack中比較大的數字pop出去時
答案都加1
然後遇到stack中一樣大的數字也要pop出去
不過答案就不用增加
最後再把答案加上stack裡剩下元素的個數
不過如果stack中有0的話
答案就要扣掉1
golang code :
func minOperations(nums []int) int {
stack := []int{}
n, ans := len(nums), 0
for i := 0; i < n; i++ {
for len(stack) > 0 && nums[i] <= stack[len(stack)-1] {
a := stack[len(stack)-1]
if nums[i] < a {
ans++
}
stack = stack[:len(stack)-1]
}
stack = append(stack, nums[i])
}
ans += len(stack)
if stack[0] == 0 {
ans--
}
return ans
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1762777617.A.7DD.html