leetcode 3542
3542: 将所有元素变为0的最少操作次数
思路:单调栈
从左往右遍历数组,只在「必须要操作」的时候,才把答案加一。

vector<int> v={0};
v 的大小为 1,唯一元素是 0。
while (v.back() > a) v.pop_back();
只要 vector 的最后一个元素大于 a,就不断弹出它,直到最后一个元素 ≤ a 或 vector 为空为止。
class Solution {
public:int minOperations(vector<int>& nums) {int ans=0;vector<int> v={0}; //在单调栈里预先放一个0,可以省去判断0和空栈的语句for(int a :nums){while(v.back()>a) v.pop_back();if(v.back()!=a){ans++;v.push_back(a);}}return ans;}
};
