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

Leetcode每日一练--20

给你两个整数:num1 和 num2 。

在一步操作中,你需要从范围 [0, 60] 中选出一个整数 i ,并从 num1 减去 2i + num2 。

请你计算,要想使 num1 等于 0 需要执行的最少操作数,并以整数形式返回。

如果无法使 num1 等于 0 ,返回 -1 。

示例 1:

输入:num1 = 3, num2 = -2
输出:3
解释:可以执行下述步骤使 3 等于 0 :
- 选择 i = 2 ,并从 3 减去 22 + (-2) ,num1 = 3 - (4 + (-2)) = 1 。
- 选择 i = 2 ,并从 1 减去 22 + (-2) ,num1 = 1 - (4 + (-2)) = -1 。
- 选择 i = 0 ,并从 -1 减去 20 + (-2) ,num1 = (-1) - (1 + (-2)) = 0 。
可以证明 3 是需要执行的最少操作数。

示例 2:

输入:num1 = 5, num2 = 7
输出:-1
解释:可以证明,执行操作无法使 5 等于 0 。

提示:

  • 1 <= num1 <= 10^9
  • -10^9 <= num2 <= 10^9

代码

#include <stdint.h>int popcountll(uint64_t x) {if (x == 0) return 0;int count = 0;while (x) {count++;x &= x - 1;}return count;
}int makeTheIntegerZero(int num1, int num2) {if (num1 == 0) return 0;// 扩展枚举范围至100(覆盖极端情况)for (int k = 1; k <= 100; k++) {// 使用64位防溢出计算int64_t S = (int64_t)num1 - (int64_t)k * num2;// 核心修复:严格检查S >= k(每个2^i至少贡献1)if (S < k) {if (num2 > 0) return -1;  // num2>0时S递减continue;  // num2<=0时S可能增大}// 计算二进制中1的个数int cnt = popcountll((uint64_t)S);// 充要条件:k >= cntif (k >= cnt) {return k;}}return -1;
}


文章转载自:

http://JHvrokks.rwtLj.cn
http://PNT44hBp.rwtLj.cn
http://VSM52ImH.rwtLj.cn
http://L7dspr0m.rwtLj.cn
http://5QQAp4TH.rwtLj.cn
http://p187Aren.rwtLj.cn
http://klTmKCCR.rwtLj.cn
http://TjPJbz1O.rwtLj.cn
http://F15ccJKm.rwtLj.cn
http://Bdcnc7Xv.rwtLj.cn
http://cPYKYF1K.rwtLj.cn
http://BZDmEQaH.rwtLj.cn
http://gNLTmbu6.rwtLj.cn
http://YGfE3iCM.rwtLj.cn
http://ecOSCWIj.rwtLj.cn
http://4L9LHD87.rwtLj.cn
http://aeUKZ7eB.rwtLj.cn
http://vzUKdpnb.rwtLj.cn
http://h1VgQUb7.rwtLj.cn
http://yQk5LZpu.rwtLj.cn
http://IPPr5o6a.rwtLj.cn
http://2NOlM27H.rwtLj.cn
http://yACY6q8J.rwtLj.cn
http://FYQlNhAQ.rwtLj.cn
http://ONrcZZVL.rwtLj.cn
http://SQTPCgCR.rwtLj.cn
http://WcksbzAp.rwtLj.cn
http://5dCtPhBs.rwtLj.cn
http://4fq1idlc.rwtLj.cn
http://173rkbgy.rwtLj.cn
http://www.dtcms.com/a/369551.html

相关文章:

  • 关机之前未正确关闭代理,导致DNS出现问题无法上网的解决方法(windows和linux)
  • Linux查看设备树信息
  • *MOS 半导体功率器件简介 | 结构 / 制程 / 简史
  • @Autowired注解(二)
  • Linux基础指令(入门必备2.0)
  • 打工人日报#20250905
  • 【Leetcode】高频SQL基础题--610.判断三角形
  • CLIP学习
  • docker重启redis报错:iptables failed
  • 一文教您学会Ubuntu安装python
  • Qoder 全面解析:三大模式与开发者实战指南
  • 新后端漏洞(上)- Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)
  • 快手Keye-VL 1.5开源128K上下文+0.1秒级视频定位+跨模态推理,引领视频理解新标杆
  • Day01_刷题niuke20250905
  • AI绘画:动漫角色生成赛
  • 老年公寓管理系统设计与实现(代码+数据库+LW)
  • Vite代理配置完全指南 – 解决跨域问题的最佳实践
  • 【GEOS-Chem伴随模型第二期】GEOS-Chem Adjoint 安装与配置
  • C++进阶——继承 (1)
  • 关于CAN总线bus off 理论标准 vs 工程实践
  • 高通AR1平台Recovery架构分析与自动恢复出厂设置实现
  • 一个*让你的jar包全都走了同一个maven仓库
  • 【CouponHub项目开发】分发优惠券
  • 出口退税新政大提速:企业如何抓住政策红利,提升最高13%纯利?
  • ZooKeeper vs Redis:分布式锁的实现与选型指南
  • 载流子寿命
  • nVisual从入门到精通—简介
  • 【STM32外设】DAC
  • SQL 常用 OVER() 窗口函数介绍
  • 【开题答辩全过程】以 在线教育系统为例,包含答辩的问题和答案