401. Binary Watch#1(Done)

Solution#1

public class Solution {
    public List<String> readBinaryWatch(int num) {
        if (num < 0 || num > 10)
            throw new IllegalArgumentException("the argument for readBinaryWatch is illegal.");
        List<List<String>> hours = new ArrayList<>();
        List<List<String>> minutes = new ArrayList<>();
        hours.add(Arrays.asList("0"));
        hours.add(Arrays.asList("1", "2", "4", "8"));
        hours.add(Arrays.asList("3", "5", "6", "9", "10"));
        hours.add(Arrays.asList("7", "11"));
        minutes.add(Arrays.asList("00"));
        minutes.add(Arrays.asList("01", "02", "04", "08", "16", "32"));
        minutes.add(Arrays.asList("03", "05", "06", "09", "10", "12", "17", "18", "20", "24", "33", "34", "36", "40", "48"));
        minutes.add(Arrays.asList("07", "11", "13", "14", "19", "21", "22", "25", "26", "28", "35", "37", "38", "41", "42", "44", "49", "50", "52", "56"));
        minutes.add(Arrays.asList("15", "23", "27", "29", "30", "39", "43", "45", "46", "51", "53", "54", "57", "58"));
        minutes.add(Arrays.asList("31", "47", "55", "59"));
        List<String> result = new ArrayList<>();
        for (int i = 0; i <= num && i < 4; i++) {
            int j = num - i;
            if (j > 5)
                continue;
            for (int k = 0; k < hours.get(i).size(); k++) {
                for (int l = 0; l < minutes.get(j).size(); l++) {
                    result.add(hours.get(i).get(k) + ":" + minutes.get(j).get(l));
                }
            }
        }
        return result;
    }
}

Problem#1

  • 把小時和分鐘所有的情況列出來匹配,時間複雜度可以接受(69.78%),但是浪費了空間,而且操作複雜,尋找其他方法
  • 把Solution#1中的List換成String[][]會更快(91.39%)
發佈了120 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章