Leetcode 868 二進位制間距

2021-09-18 01:47:45 字數 1155 閱讀 9261

給定乙個正整數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的個數。。。而且看完示例2還會造成一種迴圈連線的錯覺。。。但是其實並不是這樣,而是求解用乙個或多個零隔開的兩個1最大距離 例如

17 的二進位制是 1 0 0 0 1

如果按照錯誤理解認為返回2  但是其實正確結果是4

23 的二進位制是 1 0 1 1 1 

如果按照錯誤的理解返回4   但是正確結果是2

int binarygap(int n) 

pre = vect.begin(),post = pre+1;

while(post != vect.end())

}post++;

}return ans;

}

LeetCode 868 二進位制間距

給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個連續的 1 之間的最長距離。如果沒有兩個連續的 1,返回 0 step1 把數字換算成二進位制放在向量中 step2 把向量中等於一的數字的索引放入新的向量中 step3 遍歷新的向量,求前後元素之差,取最大值即可 class solution...

LeetCode 868 二進位制間距

leetcode習題答案彙總 題目 給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個相鄰 1 之間的最長距離。如果沒有兩個相鄰的 1,返回 0 示例 1 輸入 22 輸出 2 解釋 22 的二進位制是 0b10110 在 22 的二進位制表示中,有三個 1,組成兩對相鄰的 1 第一對相鄰的 ...

868 二進位制間距

給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個 相鄰 1 之間的 最長距離 如果不存在兩個相鄰的 1,返回 0 如果只有 0 將兩個 1 分隔開 可能不存在 0 則認為這兩個 1 彼此 相鄰 兩個 1 之間的距離是它們的二進位制表示中位置的絕對差。例如,1001 中的兩個 1 的距離為 3...