在线做爰直播网站互动营销用在哪些推广上面
文章目录
- 一、题目
- 二、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);