Binary Gap 二進位制間距
給定一個正整數 N
,找到並返回 N
的二進位制表示中兩個連續的 1 之間的最長距離。
如果沒有兩個連續的 1,返回 0
。
示例 1:
輸入:22 輸出:2 解釋: 22 的二進位制是 0b10110 。 在 22 的二進位制表示中,有三個 1,組成兩對連續的 1 。 第一對連續的 1 中,兩個 1 之間的距離為 2 。 第二對連續的 1 中,兩個 1 之間的距離為 1 。 答案取兩個距離之中最大的,也就是 2 。
示例 2:
輸入:5 輸出:2 解釋: 5 的二進位制是 0b101 。
示例 3:
輸入:6 輸出:1 解釋: 6 的二進位制是 0b110 。
示例 4:
輸入:8 輸出:0 解釋: 8 的二進位制是 0b1000 。 在 8 的二進位制表示中沒有連續的 1,所以返回 0 。
提示:
1 <= N <= 10^9
思路:這道題的距離其實就是每兩個1之間的距離,所以我們只需要每次把數字N除二取餘即可,注意對於第一個1需要做特殊處理。用變數pre表示第一個1的位置,dis表示累加的距離。
參考程式碼:
class Solution {
public:
int binaryGap(int N) {
int res = 0;
int pre = 0;
while (N && pre != 1) {
pre = N % 2;
N /= 2;
}
int dis = 1;
while (N) {
if (N % 2 == 0) {
dis++;
N /= 2;
continue;
}
else {
res = max(res, dis);
dis = 1;
N /= 2;
}
}
return res;
}
};
相關文章
- Add Binary 二進位制求和
- LeetCode67. Add Binary(二進位制加法)LeetCode
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 二進位制與二進位制運算
- mysql關於二進位制日誌binary log的總結MySql
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制
- (二進位制)
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制轉十進位制快速方法
- Vector 35 Binary Ninja for Mac(反編譯器、二進位制分析平臺)Mac編譯
- 什麼是二進位制?二進位制如何轉換?
- Cocoapods 二進位制
- 04 二進位制
- leetcode -- 二進位制LeetCode
- JavaScript十進位制轉換為二進位制JavaScript
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 反編譯器和二進位制分析平臺:Vector 35 Binary Ninja for mac編譯Mac
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 進位制與二進位制及相關轉換
- 二進位制陣列陣列
- 二進位制或序列
- 資訊學奧賽初賽天天練-71-NOIP2016普及組-基礎題2-進位制轉換、二進位制轉八進位制、八進位制轉二進位制、二叉樹陣列儲存、定址空間二叉樹陣列
- 3416:【例72.1】 二進位制轉化為十進位制
- binaascii:A Python 在二進位制和 ASCII 之間轉換ASCIIPython
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- java二進位制運算十進位制(精確運算)Java
- Python 十進位制轉換為二進位制 高位補零Python