LeetCode 1201. 丑数 III(最小公倍数+二分查找)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1201. 丑数 III(最小公倍数+二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
請你幫忙設計一個程序,用來找出第 n 個丑數。
丑數是可以被 a 或 b 或 c 整除的 正整數。
示例 1: 輸入:n = 3, a = 2, b = 3, c = 5 輸出:4 解釋:丑數序列為 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 個是 4。示例 2: 輸入:n = 4, a = 2, b = 3, c = 4 輸出:6 解釋:丑數序列為 2, 3, 4, 6, 8, 9, 12... 其中第 4 個是 6。示例 3: 輸入:n = 5, a = 2, b = 11, c = 13 輸出:10 解釋:丑數序列為 2, 4, 6, 8, 10, 11, 12, 13... 其中第 5 個是 10。示例 4: 輸入:n = 1000000000, a = 2, b = 217983653, c = 336916467 輸出:1999999984提示: 1 <= n, a, b, c <= 10^9 1 <= a * b * c <= 10^18 本題結果在 [1, 2 * 10^9] 的范圍內來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/ugly-number-iii
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 類似題目:
LeetCode 263. 丑數 && 264. 丑數 II(DP)
LeetCode 313. 超級丑數(動態規劃)
程序員面試金典 - 面試題 17.09. 第 k 個數(set優先隊列/DP)
二分處還可以寫做:
while(l < r) {mid = l+((r-l)>>1);count = mid/a + mid/b + mid/c - mid/lcm_ab - mid/lcm_ac - mid/lcm_bc + mid/lcm_abc;if(count >= rest)//mid處可能是答案,因為最后如[1,2]取不到2,不能mid-1r = mid;else// if(count < rest)l = mid+1; }0 ms 6 MB
總結
以上是生活随笔為你收集整理的LeetCode 1201. 丑数 III(最小公倍数+二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 910. 最小差值 I
- 下一篇: LeetCode 186. 翻转字符串里