問題描述: 在n枚外觀相同的硬幣中,有一枚是假幣,並且已知假幣與真幣的重量不同,但不知道假幣與真幣相比較輕還是較重。可以通過一架天平來任意比較兩組硬幣,設計一個高效的算法來檢測這枚假幣。 解題思路: 使用減治法的解題思路,將硬幣分為3堆,則每堆的硬幣數量為 n/3 ,但是這是在 n ...
題目: 排列硬幣:你總共有 n 枚硬幣,你需要將它們擺成一個階梯形狀,第 k 行就必須正好有 k 枚硬幣。 給定一個數字 n,找出可形成完整階梯行的總行數。 n 是一個非負整數,並且在 位有符號整型的范圍內。 示例 : n 硬幣可排列成以下幾行: 因為第三行不完整,所以返回 .示例 : n 硬幣可排列成以下幾行: 因為第四行不完整,所以返回 . 思路: 較簡單。 程序: class Solutio ...
2020-05-30 10:20 0 614 推薦指數:
問題描述: 在n枚外觀相同的硬幣中,有一枚是假幣,並且已知假幣與真幣的重量不同,但不知道假幣與真幣相比較輕還是較重。可以通過一架天平來任意比較兩組硬幣,設計一個高效的算法來檢測這枚假幣。 解題思路: 使用減治法的解題思路,將硬幣分為3堆,則每堆的硬幣數量為 n/3 ,但是這是在 n ...
題目: 找到所有數組中消失的數字:給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。 給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次 ...
題目: 給定一個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。 說明:每次只能向下或者向右移動一步。 思路: 本題較簡單。 程序: class Solution: def ...
題目說明: 現有八枚銀幣a b c d e f g h,已知其中一枚是假幣,其重量不同於真幣,但不知是較輕或較重,如何使用天平以最少的比較次數,決定出哪枚是假幣,並得知假幣比真幣較輕或較重。 題目解析: 單就求假幣的問題是不難,但問題限制使用最少的比較次數,所以我們不能以單純的回圈比較 ...
題目: 組合:給定兩個整數 n 和 k,返回 1 ... n 中所有可能的 k 個數的組合。 思路: 回溯算法的框架。 程序: class Solution: def combine(self ...
題目:給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 思路:與第11題的思路很像 程序: class Solution: def trap(self, height: List[int ...
題目: 各位相加:給定一個非負整數 num,反復將各個位上的數字相加,直到結果為一位數。 示例: 輸入: 38輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2。 由於 2 是一位數,所以返回 2。進階:你可以不使用循環或者遞歸,且在 O(1) 時間復雜度內解決 ...
有1分,2分,5分,10分四種硬幣,每種硬幣數量無限,給定n分錢(n<10000),求組合n分錢所需要的最少硬幣數? 動態規划的典型例題,首先定義dp[n],存放從0-n所需要的最小硬幣數,v[i]存放硬幣的面值,初始化dp[0] = 0,得出狀態轉移方程dp[i]=min{dp[i-1 ...