生成醜數的規律:如果已知醜數ugly,那麼ugly * 2,ugly * 3和ugly * 5也都是醜數。
既然求第n小的醜數,可以採用最小堆來解決。每次彈出堆中最小的醜數,然後檢查它分別乘以2、3和 5後的數是否生成過,如果是第一次生成,那麼就放入堆中。第n個彈出的數即為第n小的醜數。
時間複雜度:o(n)
空間複雜度:o(n)
1力扣官方題解 - 醜數class
solution
13return nums[n - 1
];14
}15 };
劍指Offer 49 醜數
我們把只包含因子2 3和5的數稱為醜數。求按從小到大的順序的第1500個醜數。例 6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當作第乙個醜數。遍歷數字,對每個數字判斷是否只包含2 3 5因子。問題在於,有很多無用的計算,增加時間複雜度。時間複雜度 o n 空間複雜度 o 1 可以發現...
劍指offer49 醜數
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 1.每次找出乙個最小丑數res i 都會產生三個新的醜數,2 res i 3 res i 5 res i 2.如果我...
劍指 Offer 49 醜數
我們把只包含質因子 2 3 和 5 的數稱作醜數 ugly number 求按從小到大的順序的第 n 個醜數。出看這道題可能感覺能算,但是思路就非常繁瑣。解法一 這個只說說思路,既然2,3,5是該數的因子,那麼該數除以2,3,5的餘數一定是 0 那麼就讓每個數連續除以2,3,5,只到餘數不為0 結果...