当前位置: 首页 > news >正文

链式投票|流向贪心

lc

lc797

先凑总和非负,找唯一负数位置

从近到远取两边正数补负数,累计移动步数得最小操作数

class Solution {
public:
long long minMoves(vector<int>& balance) {
long long total = 0;
int neg_idx = -1;
for (int i = 0; i < balance.size(); i++) {
int x = balance[i];
total += x;
if (x < 0) {
neg_idx = i;
}
}

if (total < 0) { // 总和必须非负
return -1;
}
if (neg_idx < 0) { // 没有负数,无需操作
return 0;
}

int n = balance.size();
int need = -balance[neg_idx];
long long ans = 0;
for (int dis = 1; ; dis++) { // 把与 neg_idx 相距 dis 的数移到 neg_idx
int s = balance[(neg_idx - dis + n) % n] + balance[(neg_idx + dis) % n];
if (s >= need) {
ans += 1LL * need * dis; // need 个 1 移动 dis 次
return ans;
}
ans += 1LL * s * dis; // s 个 1 移动 dis 次
need -= s;
}
}
};

lc277

1.找候选人

2.check候选人(3种situation)

/* The knows API is defined for you.
bool knows(int a, int b); */

class Solution
{
public:
int findCelebrity(int n)
{
int candidate = 0; //候选人
for (int x = 1; x < n; x ++)
{
if ( knows(candidate, x) == true ) //若候选人认识别人,就不可能是名人。名人不认识其他人
{
candidate = x; //所有人,一定认识名人
//////小于x的那些,要么是因为 (1)被人不知,if被人知,就抢到了candidate了
//////(2) 要么是因为认识了别人,就放弃了candidate
}
}

for (int x = 0 ; x < n; x ++)
{
if (candidate == x) //名人不认识其他人,但是认识自己
continue;
if ( knows(candidate, x) == true)
return -1; //名人不应该认识 anyone
if (knows(x, candidate) == false)
return -1; //anyone 认识名人
}

return candidate;
}
};

http://www.cnnetsun.cn/news/50688.html

相关文章:

  • 零基础图解MinGW安装:小学生都能看懂
  • 对比评测:5种Ubuntu中文输入法的输入效率差异
  • Bosque语言:正则化编程范式的技术革命
  • 腾讯开源Hunyuan-7B-Instruct-AWQ-Int4:重塑大模型多场景部署范式
  • GKD订阅管理终极指南:2025年高效配置与使用技巧
  • Spring Boot依赖传输失败的5种实战解决方案
  • 开源PIM系统:unopim企业级产品信息管理解决方案
  • 用AI快速开发java17新特性应用
  • AI如何帮你解决Gradle插件应用异常问题
  • Tsukimi:重新定义你的Emby媒体播放体验
  • Sigmoid函数:AI模型中的激活函数核心
  • mac 安装brew零基础入门指南
  • CreamInstaller终极指南:一站式游戏DLC解锁完整教程
  • PSU必须配监控单元吗?一文讲透电源监控的配置逻辑
  • 条码扫描技术选型指南:5分钟搞定ZXing与竞品对比
  • YOLOv5 2025革新:动态损失函数突破多尺度检测瓶颈,边缘智能应用提速
  • 零基础教程:用ZyperWin开发你的第一个Windows程序
  • 零基础教程:Ubuntu ISO下载完全指南
  • 企业级应用中的中文编码实战:chcp 65001应用场景
  • AI如何革新媒体内容管理?Mediago开发实战
  • 1小时快速开发:打造你自己的.deb安装器原型
  • 企业级应用:Windows系统OpenSSL证书管理实战
  • 基于vue的图书预约借阅管理设计与实现_bcpi4d91_springboot php python nodejs
  • 如何高效管理视频文件:Seal智能命名完整指南
  • 如何用AI解决getInputStream()重复调用问题
  • AI助力GitLab本地部署:智能配置与自动化管理
  • 企业级.deb包部署实战:从单机到批量安装
  • 1小时验证创意:用神速Down打造下载加速器原型
  • 企业级NTP服务部署实战:解决同步失败问题
  • AI自动生成批处理脚本:告别手动编写烦恼