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

leetcode 1611

1611:使整数变为0的最少操作次数

我们需要确定在0 ≤ n ≤ 10⁹的范围内,整数n转换为二进制后最多有多少位。

二进制位数的基本概念

一个正整数n的二进制表示的位数可以通过以下公式计算:

位数=⌊log2​n⌋+1

这个公式的含义是:n的二进制位数比n的二对数(向下取整)多1。这是因为:

  • 如果n是2的幂次方(例如1, 2, 4, 8, ...),那么log₂n是整数,位数就是log₂n + 1。

  • 如果n不是2的幂次方,那么log₂n不是整数,向下取整后加1得到位数。

计算10⁹的二进制位数

我们需要找到最大的n在范围内,即n = 10⁹。计算其二进制位数:

位数=⌊log2​109⌋+1

首先计算log₂10⁹:

log2​109=9×log2​10

我们知道:

log2​10≈3.321928

因此:

9×log2​10≈9×3.321928≈29.897352

然后取 floor:

⌊29.897352⌋=29

最后加1:

29+1=30

因此,10⁹的二进制表示有30位(数目),对应下标0...29。

        while(n) {int id1 = -1, id2 = -1;for(int i = 30; i >= 0; i--) { // 从高位开始遍历,寻找 1if((1 << i) & n) {if(id1 == -1) id1 = i; // 记录较高位的 1else if(id2 == -1) id2 = i; // 记录较低位的 1else {break; // 都找到了就 break}}}

这段代码的目的是:n 的二进制表示中,从高位到低位,找到最高的两个 1 的位置,分别记为 id1id2

(1 << i) & n

作用判断 n 的第 i 位是否为 1

  • & nn 按位与,如果结果非零,说明 n 的第 i 位是 1。

  • 按位与就是“两个数的二进制对齐,逐位做逻辑与”,结果只有对应位同时是 1 的位置才是 1

n^=(1<<id1);

class Solution {
public:int minimumOneBitOperations(int n) {int cnt[30];  //10⁹的二进制表示有30位(数目),对应下标0...29int res=0;for(int i=0;i<30;i++) cnt[i]=(1<<(i+1))-1;  //将规律 1 的结果预处理出来存在数组 cnt[i] = 2^(i+1) - 1while(n){int id1=-1,id2=-1;for(int i=29;i>=0;i--){  //从高位开始遍历,寻找 1if((1<<i)&n){  //判断 n 的第 i 位是否为 1,按位与(包括第0位)if(id1==-1) id1=i;  //记录较高位的 1else if(id2==-1) id2=i;   //记录较低位的 1else{break;  //都找到了就 break}}}if(id2==-1){  //只找到一个n^=(1<<id1);  //第 id1 位被反转,其余位保持不变res+=cnt[id1];  //规律1}else{n^=(1<<id1);n^=(1<<id2);res+=(cnt[id1]-cnt[id2]); //规律2}}return res;}
};

http://www.dtcms.com/a/586481.html

相关文章:

  • 可信网站多少钱网站建设 网络科技
  • 电容充电:电子在极板上“分家囤货”,靠电场把电能“锁”起来
  • 做网站前怎么写文档phpcms模板下载
  • 在哪里创建网站平台自己的电脑如何做网站
  • 做一个网站要多少钱wordpress 短信通知
  • 太原网站优化哪家专业网站字体选择
  • 知识图谱之——图数据库:以“关系”为核心的数据新大陆
  • doris通过外部表同步数据
  • 做网站视频存储在哪里网页设计与制作课件张松炎
  • 做网站dwshopex 如何看 网站后台
  • 网站建设要做哪些工作室想开个网站怎么做
  • Trie树相关算法题java实现
  • (根号分治)nfls #1982 倍数点更新 题解
  • 哪个网站注册域名便宜中小企业网站建设济南兴田德润电话
  • 深圳 网站建设 销售seo的中文含义是
  • ui网站建设wordpress视频设置方法
  • asp网站后台产品管理中增加一个功能怎样修改微信小程序怎么收费
  • 做网站应该画什么图合肥市城乡城乡建设局网站
  • 仓颉编程语言中的Option类型与模式匹配深入解析
  • 达梦数据复制软件DMDRS
  • 做一年的网站维护价格培 网站建设方案 doc
  • 网站地图添加合肥免费做网站
  • Java 11+ HttpClient 实战:从 HttpURLConnection 到现代 HTTP 客户端的全面升级​
  • 广州网站建设信科网络上海十大家装公司排名
  • 重庆站外推广网站wordpress 商城模板下载
  • 徐州做网站的培训机构欧洲美妇做爰网站
  • zencart网站国外可以做会员网站的网站
  • 万网网站备案授权书网站改版 升级的目的
  • 网站建设素材图企业手机网站建设有
  • vue介绍