news 2026/10/13 17:51:24

两个有序集合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
两个有序集合

lc3510

两个有序集合

贪心策略,每次移除和最小的递减相邻数对并将两数合并,持续消除所有递减相邻对

统计移除操作次数即为最少移除对数,实现数组非递减的最小相邻数对移除求解

class Solution {
public:
int minimumPairRemoval(vector<int>& nums) {
int n = nums.size();
set<pair<long 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);
}

set<int> idx; // 剩余下标
for (int i = 0; i < n; i++) {
idx.insert(i);
}

vector<long 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;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 4:47:53

呼伦贝尔融媒体数据库国产化替换成功案例:筑牢宣传阵地安全底座,金仓KES助力云雀系统高效运转

引言&#xff1a;以自主可控筑牢主流舆论阵地安全防线在国家大力推进信息技术应用创新&#xff08;信创&#xff09;战略的背景下&#xff0c;党政机关作为意识形态工作的前沿阵地&#xff0c;其信息系统安全与数据自主可控已成为关乎国家安全的重要议题。融媒体中心作为新时代…

作者头像 李华
网站建设 2026/10/12 5:51:43

多维异常识别与分级分类,让复杂用电管理更简单

【导读】目前很多用电管理系统模式化太固化&#xff0c;功能太离地&#xff0c;与用户的实际需求相去甚远。采集数据一堆&#xff0c;不过却没办法给管理人员清晰的风险告警和策略。本文从一线人员的用电管理实践出发&#xff0c;讲清用电监测遇到的困难在哪里&#xff0c;怎么…

作者头像 李华
网站建设 2026/10/12 13:01:21

利用Windows电话服务中的RCE漏洞:深入分析CVE-2026-20931

Who’s on the Line? Exploiting RCE in Windows Telephony Service Written by Sergey Bliznyuk on January 19, 2026 几十年来&#xff0c;Windows一直支持计算机电话集成&#xff0c;为应用程序提供管理电话设备、线路和通话的能力。虽然现代部署越来越依赖基于云的电话解决…

作者头像 李华
网站建设 2026/10/11 7:58:32

anaconda环境中如何生成requirements

在Anaconda环境中生成requirements.txt文件是一个常见的需求&#xff0c;特别是在需要将项目依赖分享给其他人或者在部署环境时。以下是一些常用的方法来实现这一点&#xff1a;方法1&#xff1a;使用conda list命令1. 导出环境&#xff1a;首先&#xff0c;你可以使用conda en…

作者头像 李华
网站建设 2026/10/9 19:51:11

2025年总结:一个树苗倔强生长

文章目录引言嫩芽期成长期在Apache seata社区腾讯犀牛鸟在Spring AI Alibaba社区第一份实习对新的一年有什么展望吗在过去的一年有什么后悔的吗总结引言 今年过的真是快&#xff0c;一转眼&#xff0c;就从2025年到2026年了。小时候总以为要到2025很遥远很遥远&#xff0c;记得…

作者头像 李华