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 二進位制求和
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 位,位元組,二進位制,十六進位制間的關係
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- Count 1 in Binary(二進位制中有多少個1)
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 二進位制與二進位制運算
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- LeetCode67. Add Binary(二進位制加法)LeetCode
- (二進位制)
- 二進位制
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- mysql關於二進位制日誌binary log的總結MySql
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- JavaScript 進位制轉換(2進位制、8進位制、10進位制、16進位制之間的轉換)JavaScript
- 二進位制轉十進位制快速方法
- 什麼是二進位制?二進位制如何轉換?
- 04 二進位制
- C# 2進位制、8進位制、10進位制、16進位制...各種進位制間的輕鬆轉換C#
- JavaScript十進位制轉換為二進位制JavaScript
- Oracle二進位制與十進位制轉換Oracle
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- python進位制轉換(二進位制、十進位制和十六進位制)及注意事項Python
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- oracle 進位制轉換 HEX/DECIMAL/OCTAL/BINARYOracleDecimal
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 十進位制與二進位制互相轉換指南
- 二進位制轉十進位制快速轉換方法
- Vector 35 Binary Ninja for Mac(反編譯器、二進位制分析平臺)Mac編譯