949 給定數字能組成的最大時間(簡單題)

2021-09-26 02:27:36 字數 1140 閱讀 6882

題目描述:

給定乙個由 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...