已解决
LeetCode 面试题 05.03. 翻转数位
来自网友在路上 182882提问 提问时间:2023-09-25 00:42:33阅读次数: 82
最佳答案 问答题库828位专家为你答疑解惑
文章目录
- 一、题目
- 二、Java 题解
一、题目
给定一个32位整数 num
,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例 1:
输入: num = 1775(110111011112)
输出: 8
示例 2:
输入: num = 7(01112)
输出: 4
点击此处跳转题目。
二、Java 题解
p
表示当前最多连续 1 的个数,last
表示上次最多连续 1 的个数。遍历每一位,如果为 1,则 p
递增;否则重置 last
为 p
,并将 p
设为 0,表示重新开始计 1。
class Solution {public int reverseBits(int num) {int p = 0, last = 0, ans = 1;for (int i = 0; i < 32; i++) {if ((num & (1 << i)) != 0) p++;else {last = p;p = 0;}if (p + last + 1 > ans) ans = p + last + 1;}return ans > 32 ? 32 : ans;}
}
- 时间:0 ms,击败 100.00% 使用 Java 的用户
- 内存:36.98 MB,击败 90.63% 使用 Java 的用户
这里新学到了一种遍历每一位的方式:
for (int i = 0; i < 32; i++) int p = num & (1 << i);
查看全文
99%的人还看了
相似问题
- 每天一道算法题(七)——求一个数组中最多能存储多少雨水(困难)
- LeetCode(28)盛最多水的容器【双指针】【中等】
- 给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一
- 力扣最热一百题——盛水最多的容器
- C#的LINQ to XML 类中使用最多的三个类:XElement、XAttribute 和 XDocument
- 力扣:149. 直线上最多的点数(Python3)
- 阿里云多款ECS产品全面升级 性能最多提升40%
- leetcode 1353. 最多可以参加的会议数目
- 【每日一题Day361】LC2558从数量最多的堆取走礼物 | 大顶堆
- 2023-10-28 LeetCode每日一题(从数量最多的堆取走礼物)
猜你感兴趣
版权申明
本文"LeetCode 面试题 05.03. 翻转数位":http://eshow365.cn/6-13107-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 【Spring】Bean 的作用域
- 下一篇: 如何自动获取短信验证码?