news 2026/5/17 7:38:36

两个有序集合

作者头像

张小明

前端开发工程师

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/5/3 15:50:02

Cypress-CYT4B-Mcal配置说明(十)Mcu模块配置

Mcu模块涉及配置较多&#xff0c;主要包括时钟配置和模式配置。 1.时钟配置 1.1MCU时钟配置 根据实际外部晶振配置使能ECO&#xff0c;配置ECO频率&#xff08;等于晶振频率&#xff09;。选择适当的分频系数&#xff0c;配置PLL2和PLL3时钟。同样配置SSCG_PLL0和SSCG_PLL1时钟…

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

告别机房管理 “盲盒”!实现主动预判的可视化运维

数据中心运维管理中&#xff0c;传统的机房管理常常面临设备繁多、管理混乱、故障排查困难、空间资源浪费等问题&#xff0c;就像在开 “盲盒” 一样充满不确定性&#xff1b;这些问题不仅影响运维效率&#xff0c;更可能对业务连续性造成潜在风险。乐维CMDB的机房视图&#xf…

作者头像 李华
网站建设 2026/5/10 21:46:03

《Biuredis》原生开发的鸿蒙app究竟能帮你干啥?

BiuRedis是一款移动端 Redis数据库管理客户端&#xff0c;为 开发者、数据库管理员及运维人员提供便捷的掌上运维服务。您可以通过本应用轻松连接并管理Redis服务&#xff0c;满足日常开发调试与运维监控的需求。

作者头像 李华
网站建设 2026/5/14 14:02:33

java_ssm36实验室计算机故障报修系统

目录具体实现截图实验室计算机故障报修系统的设计与实现&#xff08;摘要&#xff09;系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 实验室计算机故障报修系统的设计与实现&#xff08;摘要&am…

作者头像 李华
网站建设 2026/4/30 23:07:59

java_ssm38宠物常规护理知识科普管理系统 _87n3x

目录 具体实现截图系统概述核心功能技术架构应用价值 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 系统概述 Java_SSM38宠物常规护理知识科普管理系统_87n3x是一个基于SSM&#xff08;Sprin…

作者头像 李华