程序员面试金典 - 面试题 05.03. 翻转数位(位运算)

1. 题目

给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。

示例 1:
输入: num = 1775(11011101111)
输出: 8示例 2:
输入: num = 7(0111)
输出: 4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-bits-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录连续1的端点及长度
class Solution {
public:int reverseBits(int num) {if(num==0)return 1;int prevlen, prevEnd, maxlen = 0, count = 0, start=-1;int curstart, curlen, curEnd;map<int,pair<int,int>> continOne;//连续1,结束pos : {开始位置,个数}for(int i = 0; i < 32; ++i){if((num>>i)&1) //为1{if(start==-1)start = i;count++;if(i == 31)continOne[i] = make_pair(start,count);}else{if(count)continOne[i-1] = make_pair(start,count);count = 0;start = -1;}}auto it = continOne.begin();prevlen = it->second.second;prevEnd = it->first;maxlen = prevlen+1;it++;for(; it != continOne.end(); ++it){curEnd = it->first;curstart = it->second.first;curlen = it->second.second;if(curstart - prevEnd == 2)maxlen = max(maxlen, curlen+prevlen+1);elsemaxlen = max(maxlen, curlen+1);prevlen = curlen;prevEnd = curEnd;}return maxlen;}
};
  • 简洁版
class Solution {
public:int reverseBits(int num) {int prevlen = 0, curlen = 0, maxlen = 0;for(int i = 0; i < 32; ++i){if((num>>i)&1) //为1curlen++;else{maxlen = max(maxlen, curlen+prevlen+1);prevlen = curlen;curlen = 0;}}return maxlen;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

曝阿里达摩院大模型 M6 带头人杨红霞已离职:个人选择,非行业原因

作者 | 李梅来源 | AI科技评论阿里 M6 大模型带头人杨红霞&#xff0c;已从阿里巴巴达摩院智能计算实验室离职。AI科技评论获悉&#xff0c;阿里 M6 大模型的原带头人杨红霞&#xff0c;已于 9 月初因个人家庭原因从阿里巴巴达摩院智能计算实验室离职。杨红霞常年深耕在产业化大…

c#服务器后台搭建_【环境搭建】Docker简明安装教程

背景在前面的文章中介绍了docker&#xff0c;这里讲讲它的安装CZMan95&#xff1a;【环境搭建】Docker篇​zhuanlan.zhihu.com在服务器上安装docker的话还是有些操作&#xff0c;所以这里写个简明教程主要针对Linux服务器&#xff08;Ubuntu&#xff09;&#xff0c;Windows和M…

程序员面试金典 - 面试题 05.01. 插入(位运算)

1. 题目 插入。给定两个32位的整数 N 与 M&#xff0c;以及表示比特位置的 i 与 j。 编写一种方法&#xff0c;将 M 插入 N&#xff0c;使得 M 从 N 的第 j 位开始&#xff0c;到第 i 位结束。 假定从 j 位到 i 位足以容纳 M&#xff0c;也即若 M 10 011&#xff0c;那么 j …

关于下一代IM服务器的一点想法

1、引言当前IM的站场上依旧硝烟弥漫&#xff0c;QQ, MSN, Google Talk, ICQ, Yahoo!还都在争夺着市场的份额。今天我所要说的&#xff0c;是跳出商业利益趋势之短利&#xff0c;而从长远的角度考虑IM的发展趋势。目前各大IM各自为政&#xff0c;在互相学习中提供着越来越丰富的…

一阶电路暂态响应的结果分析。_阻尼比测试方法及谐响应分析

谐响应分析中&#xff0c;阻尼比的确定是关键问题&#xff0c;工程中阻尼比经常是估计值&#xff0c;导致分析结果跟实际不符。阻尼对模态频率的影响很小&#xff0c;阻尼的主要作用是压低共振处的幅值&#xff0c;如果阻尼取为0的话&#xff0c;共振处的峰值会相当大&#xff…

Prompt IDE来了…是划时代AI神器还是鸡肋?

文 | 小戏在闲极无聊百无聊赖的刷着推特的时候&#xff0c;突然看到了这样一条消息让我手指一停。眼睛很快捕捉到了关键词&#xff0c;嗯&#xff1f;PromptIDE? 不知道大家看到 Prompt 和 IDE 这两个词组合在一起是一种什么样的感受&#xff0c;我的第一反应可能是“啊&#…

程序员面试金典 - 面试题 08.07. 无重复字符串的排列组合(回溯)

1. 题目 无重复字符串的排列组合。编写一种方法&#xff0c;计算某字符串的所有排列组合&#xff0c;字符串每个字符均不相同。 示例1:输入&#xff1a;S "qwe"输出&#xff1a;["qwe", "qew", "wqe", "weq", "ewq&…

(转)初次体验.net Ajax无刷新技术

早就听说Ajax技术了&#xff0c;传说中是一种很牛的东西&#xff0c;号称无刷新&#xff0c;其实是在web上通过javascript&#xff0c;使用异步的xmlhttp请求&#xff0c;实现无刷新的web界面。可惜一直没有体验过&#xff0c; 先后听做PHP的朋友用过PHP的Ajax开发包&#xff0…

提速256倍,斯坦福谷歌提出扩散模型蒸馏方法,效果接近Teacher

编辑 | 杜伟、陈萍来源 | 机器之心斯坦福大学联合谷歌大脑使用「两步蒸馏方法」提升无分类器指导的采样效率&#xff0c;在生成样本质量和采样速度上都有非常亮眼的表现。去噪扩散概率模型&#xff08;DDPM&#xff09;在图像生成、音频合成、分子生成和似然估计领域都已经实现…

移动数据网络类型是nr_便携式移动网络的快速搭建方法

在用户高峰时段&#xff0c;常用的移动网络很容易堵塞&#xff0c;不堪重负。所以&#xff0c;关键时刻能够建立安全可靠的通信&#xff0c;是非常重要的。在本案例中&#xff0c;我用的移动通信系统是GSM协议&#xff0c;为了能够将GSM协议广播出去&#xff0c;我使用了BladeR…

程序员面试金典 - 面试题 17.19. 消失的两个数字(数学/位运算)

1. 题目 给定一个数组&#xff0c;包含从 1 到 N 所有的整数&#xff0c;但其中缺了两个数字。 你能在 O(N) 时间内只用 O(1) 的空间找到它们吗&#xff1f; 以任意顺序返回这两个数字均可。 示例 1: 输入: [1] 输出: [2,3]示例 2: 输入: [2,3] 输出: [1,4]提示&#xff1a…

其实没事做,写写博客也不错的

以前一直很喜欢记录自己的一些事情&#xff0c;现在有博客这个东西了&#xff0c;但是懒得很&#xff0c;申请N多没有一个坚持记录下去的&#xff0c;希望在博客园可以好好安家。。今晚竟然看博客看到11.00了&#xff0c;要洗澡睡觉了。。明天要搞定PES、还要开会。。。事情有点…

python sorted下标_Python列表操作最全面总结

1.列表添加元素列表中可以使用append、insert、extend方法实现元素的添加。append会把新元素添加到列表末尾"a", insert(index, object) 在指定位置index前插入元素object"a", 通过extend可以将另一个集合中的元素逐一添加到列表中(合并)A [1, 2]B [3, 4…

BatchFormer:有效提升数据稀缺场景的模型泛化能力|CVPR2022

文 | 侯志知乎&#xff08;已授权&#xff09;源 | 极市平台摘要当前的深度神经网络尽管已经取得了巨大的成功&#xff0c;但仍然面临着来自于数据稀缺的各种挑战&#xff0c;比如数据不平衡&#xff0c;零样本分布&#xff0c;域适应等等。当前已经有各种方法通过样本之间的关…

程序员面试金典 - 面试题 16.06. 最小差(排序+双指针)

1. 题目 给定两个整数数组a和b&#xff0c;计算具有最小差绝对值的一对数值&#xff08;每个数组中取一个值&#xff09;&#xff0c;并返回该对数值的差 示例&#xff1a; 输入&#xff1a;{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出&#xff1a; 3&#xff0c;即数值对…

bigdecimal 保留两位小数_一起聊聊小数的储存和运算

原创&#xff1a; 蜀中亮子 玄说前端 小数运算的问题在 js 中的小数运算中&#xff0c;一直存在着一个问题&#xff0c;比如&#xff1a;0.10.20.30000000000000004 、0.4-0.30.10000000000000003。那么为什么会出现这种情况呢&#xff1f;这种情况又如何解决呢&#xff1f;为什…

从DeepFace到AdaFace,7篇论文讲清人脸识别

人脸识别是现在应用最广泛的视觉技术之一&#xff0c;同时也是前沿研究热点之一。我找来了深耕人脸的朋友张老师&#xff0c;从DeepFace到AdaFace&#xff0c;讲解deepface、facenet、vggface、sphereface、cosface、adaface等论文&#xff0c;给各位做一次人脸识别的系统分享。…

提升方法(Boosting)

文章目录1. 提升方法AdaBoost算法2. AdaBoost算法训练误差分析3. AdaBoost算法的解释4. 提升树5. sklearn 实例提升&#xff08;boosting&#xff09;方法是一种常用的统计学习方法&#xff0c;应用广泛且有效。 在分类问题中&#xff0c;它通过改变训练样本的权重&#xff0c…

在两个页面之间传递信息

在asp.net不同页面之间传值的方法主要有三种:(1)用querystring方法&#xff1a;在vs2005中新建asp.net网站(发送端)&#xff0c;在页面上添加button,两个TextBox,代码如下&#xff1a;protectedvoidButton1_Click(objectsender, EventArgs e) { string url; u…

英特尔或将大幅裁员

编辑 | David来源 | 新智元受PC业务持续不振影响&#xff0c;曝英特尔计划裁员数千人&#xff0c;可能将影响20%的员工。据知情人士透露&#xff0c;英特尔公司正计划大幅裁员&#xff0c;人数可能达到数千人&#xff0c;以削减成本&#xff0c;应对不景气的个人电脑市场的萎缩…