leetCode 劍指 Offer 49 醜數

2021-10-09 09:25:22 字數 642 閱讀 1230

直觀解法是遍歷數字,判斷每個數字是否是醜數(連續除2或3或5最後等於1)。這種解法比較直觀但是每個數字都需要計算耗時太大。

直觀解法比較慢是由於每個數字都需要計算,我們可以考慮空間換時間來避免這種計算。定義乙個陣列,存放排序好的醜數,假設陣列中某個位置的醜數是m,那麼它肯定能由之前的醜數乘2或3或5得到。我們可以將m之前得醜數都乘2找到大於m得最小值m2,都乘3找到大於m的最小值m3,都乘5找到大於m的最小值m5,最後比較m2,m3,m5找到最小值作為下乙個醜數。

這種方法m之前醜數都要乘2,3,5。我們可以知道在m之前肯定存在乙個醜數t2,使得t2之前的醜數乘2都小於等於m,t2之後的都太大了。同理存在t3,t5,我們只需記錄下這個醜數的位置,每次生成新醜數的時候更新這三個位置即可。

**如下:

class

solution

return uglynumbers[nextuglynumber-1]

;}private

intmin

(int num1,

int num2,

int num3)

}

leetcode 劍指 Offer 專題(七)

劍指 offer 專題第七部。題目 劍指 offer 66.構建乘積陣列。定義 begin v 1 i prod a k a 0 times a 1 times dots times a i 1 quad v 1 0 1 v 2 i prod a k a i 1 times dots times a...

leetcode劍指offer 字串

二叉樹,鍊錶,字串 思路 進行兩次反轉 1.對整個句子反轉 2.對句子中的單詞反轉 經過三次反 1.反轉前面的字串。2.反轉後面的字串。3.反轉整個字串 不能直接用力扣46全排列的 力扣46是無重複的數字,這個題是有重複的。正確的解法 不用not in tmp來判斷這個字母是否需要遍歷,定義乙個us...

Leetcode劍指offer系列 平衡二叉樹

傳送門 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,nul...