LeetCode 483. 最小好进制(二分查找)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 483. 最小好进制(二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
對于給定的整數 n, 如果 n 的 k(k>=2)進制數的所有數位全為1,則稱 k(k>=2)是 n 的一個好進制。
以字符串的形式給出 n, 以字符串的形式返回 n 的 最小 好進制。
示例 1: 輸入:"13" 輸出:"3" 解釋:13 的 3 進制是 111。示例 2: 輸入:"4681" 輸出:"8" 解釋:4681 的 8 進制是 11111。示例 3: 輸入:"1000000000000000000" 輸出:"999999999999999999" 解釋:1000000000000000000 的 999999999999999999 進制是 11。提示: n的取值范圍是 [3, 10^18]。 輸入總是有效且沒有前導 0。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/smallest-good-base
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 數字 n 假設為 2 進制,它最多有多少位是可以求出來的,進制越大,位數越少
- 從最多可能的位數開始遍歷
- 每種位數 bit 的情況下,二分查找進制 k,使得 bit 位 k 進制 111…的數等于 n,即找到
- 由于 bit 是從大到小,即進制是小到大的,找到一個解就是最小好進制
12 ms 6 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 483. 最小好进制(二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1974. 使用特殊打
- 下一篇: LeetCode 2058. 找出临界点