題目描述:
給定乙個由 4 位數字組成的陣列,返回可以設定的符合 24 小時制的最大時間。
最小的 24 小時制時間是 00:00,而最大的是 23:59。從 00:00 (午夜)開始算起,過得越久,時間越大。
以長度為 5 的字串返回答案。如果不能確定有效時間,則返回空字串。
示例 1:
輸入:[1,2,3,4]
輸出:「23:41」
示例 2:
輸入:[5,5,5,5]
輸出:""
a.length == 4
0 <= a[i] <= 9
暴力破解思路概述:
遍歷整個陣列,找到這4個數能組成的所有結果,然後找出符合小時數小於24,分鐘數小於60的最大合法資料。
暴力解法:
class
solution
//資料合法,就用result來記錄較大的數字}}
}}return result >=
0? string.
format
("%02d:%02d"
, result /
60, result %60)
:"";}
//result只要有合法的資料就會大於等於0,就可以返回
//這裡要要注意時間,即使小時數是個位數,表示時間時也有加上前面的0
//因此這裡呼叫了string類的format方法,"%02d"的意思是這個數占2位,不夠兩位拿0填滿
}
分析:
在遍歷過程中,我們使用a[i]來記錄小時的第一位,其實我們可以知道,如果第一位大於2了,那接下來的 j 和 k 就不需要遍歷了。
同樣的,如果第一位是2,第二位的 j 大於3,,那接下來的k也不需要遍歷了
第三位如果大於5,也同樣可以跳過這一步。所以,可以將演算法改進,新增幾個條件來減少執行時間。
改進演算法:
class
solution}}
return"";
}}
給定範圍n內給定數字m的個數
求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。程式設計之美上給出...
火柴棍能組成的最大數字
題目 輸入火柴棍根數n,能選取的數字個數m,以及能選取的數字列表 輸入案例 原題案例我忘了,瞎寫的 20 4 5 6 7 8 輸出能組成的最大整數值 題解 使用動態規劃,github鏈結 如有錯誤還望指出,新手上路,請多關照 include include include using namespa...
找出相加能得給定數的連續的數
大冬的面試題。題目大意 給定乙個數n,找出幾個連續的數,這幾個數相加等於n。找出所有這樣的數。比如給出15,有7 8 15,有4 5 6 15,還有1 2 3 4 5 15。想了下,用最笨的辦法for出來.下面貼 include include include include include usi...