給你乙個整數 n ,請你找出並返回第 n 個 醜數 。
醜數 就是只包含質因數 2、3 和/或 5 的正整數。
示例 1:
輸入:n = 10
輸出:12
解釋:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 個醜數組成的序列。
示例 2:
輸入:n = 1
輸出:1
解釋:1 通常被視為醜數。
很明顯,判斷每乙個數是否是醜數,再判斷它是第幾個明顯不現實,絕對超時,所以要提前構造每個數的2,3,5倍,然後直到這是第n個醜數,再返回。
構造方法就是建立乙個dp陣列,dp[i-1]代表的這是第i個醜數,初始化dp[0] = 1,因為第乙個醜數是1,然後我們使用3個下標p2=0,p3=0,p5=0,去分別代表2倍,3倍,5倍,如何構造第二個醜數呢,我們要使2dp[p2],3dp[p3],5dp[p5],很明顯,其中最小的就是第2個醜數,3dp[p3],5[p5]一定是後面的醜數了(只對這次而言),然後p2下標加一,第三個醜數理所當然的應該是3dp[p3],算嘛,2dp[p2],3dp[p3],5dp[p5],中最小的一定是3dp[p3],而我們不用算,我們只需要用min來取得每次一最小的醜數就行了。
class solution
return dp[n-1];
}};
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...
LeetCode每日一題(題139)
題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...