「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
题目
给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例1:
输入: num = 1775(11011101111)
输出: 8
示例2:
输入: num = 7(0111)
输出: 4
解题思路
根据题目给出的示例分析,我们可以通过右移去判断每一位是否为 "1",从而去计算最长一串 1 的长度;
通过每次去维护三个变量:
cur:当前位置为止连续 1 的个数,遇到0 归零,遇到 1 加 1;
insert:在当前位置变成 1,往前数连续 1 的最大个数,遇到 0 变为 cur+1,遇到 1 加 1;
res:保存insert的最大值即可;
代码实现
class Solution {
public int reverseBits(int num) {
int cur = 0;
int insert = 0;
int res = 1;
for(int i = 0; i < 32; i++){
if((num & (1 << i)) != 0){
cur += 1;
insert += 1;
}else{
insert = cur + 1;
cur = 0;
}
res = Math.max(res , insert);
}
return res;
}
}
最后
- 时间复杂度 O(32): 只需要遍历一遍每一位即可
- 空间复杂度 O(1): 只使用了几个变量
**往期文章:
- 好看的图表怎么画,看完这几个 API 你就会了
- 二叉树刷题总结:二叉搜索树的属性
- 二叉树总结:二叉树的属性
- 二叉树总结:二叉树的修改与构造
- StoreKit2 有这么香?嗯,我试过了,真香
- 看完这篇文章,再也不怕面试官问我如何构造二叉树啦!
- 那帮做游戏的又想让大家氪金,太坏了!
- 手把手带你撸一个网易云音乐首页 | 适配篇
- 手把手带你撸一个网易云音乐首页(三)
- 手把手带你撸一个网易云音乐首页(二)
- 手把手带你撸一个网易云音乐首页(一)
- 代码要写注释吗?写你就输了
- Codable发布这么久我就不学,摸鱼爽歪歪,哎~就是玩儿
- iOS 优雅的处理网络数据,你真的会吗?不如看看这篇
- UICollectionView 自定义布局!看这篇就够了
请你喝杯 ☕️ 点赞 + 关注哦~
- 阅读完记得给我点个赞哦,有👍 有动力
- 关注公众号--- HelloWorld杰少,第一时间推送新姿势
最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**