南宁网站开发培训贵阳专业网站建设公司
2026/4/10 18:01:29 网站建设 项目流程
南宁网站开发培训,贵阳专业网站建设公司,那个网站的公众后推广做的好,手机网站建设价格是多少lc3510 两个有序集合 贪心策略#xff0c;每次移除和最小的递减相邻数对并将两数合并#xff0c;持续消除所有递减相邻对 统计移除操作次数即为最少移除对数#xff0c;实现数组非递减的最小相邻数对移除求解 class Solution { public: int minimumPairRemoval(vector每次移除和最小的递减相邻数对并将两数合并持续消除所有递减相邻对统计移除操作次数即为最少移除对数实现数组非递减的最小相邻数对移除求解class Solution {public:int minimumPairRemoval(vectorint nums) {int n nums.size();setpairlong long, int pairs; // (相邻元素和左边那个数的下标)int dec 0; // 递减的相邻对的个数for (int i 0; i 1 n; i) {int x nums[i], y nums[i 1];if (x y) {dec;}pairs.emplace(x y, i);}setint idx; // 剩余下标for (int i 0; i n; i) {idx.insert(i);}vectorlong long a(nums.begin(), nums.end());int ans 0;while (dec 0) {ans;// 删除相邻元素和最小的一对auto [s, i] *pairs.begin();pairs.erase(pairs.begin());auto it idx.lower_bound(i);// (当前元素下一个数)auto nxt_it next(it);int nxt *nxt_it;dec - a[i] a[nxt]; // 旧数据// (前一个数当前元素)if (it ! idx.begin()) {int pre *prev(it);dec - a[pre] a[i]; // 旧数据dec a[pre] s; // 新数据pairs.erase({a[pre] a[i], pre});pairs.emplace(a[pre] s, pre);}// (下一个数下下一个数)auto nxt2_it next(nxt_it);if (nxt2_it ! idx.end()) {int nxt2 *nxt2_it;dec - a[nxt] a[nxt2]; // 旧数据dec s a[nxt2]; // 新数据当前元素下下一个数pairs.erase({a[nxt] a[nxt2], nxt});pairs.emplace(s a[nxt2], i);}a[i] s; // 把 a[nxt] 加到 a[i] 中idx.erase(nxt); // 删除 nxt}return ans;}};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询