ARTS打卡第一週(兩數之和,爲什麼要用springboot,cronTab,軟件設計文檔示例模板)

1. Algorithm:

難度:簡單
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。

你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因爲 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

  • 題解一
    直接嵌套便利(時間複雜度O(n^2))
 public int[] twoSum(int[] nums, int target) {
        int [] sumNums = new int[2];
        //先便利數組
        for (int i=0;i<nums.length;i++) {
            for (int j=0;j<nums.length;j++) {
                if (nums[i]+nums[j]==target&&i!=j) {
                    sumNums[0] = i;
                    sumNums[1] = j;
                    return sumNums;
                }
            }
        }
        return null;
    }

研究了別的優秀題解,使用hashMap的查詢時間複雜度爲0(1)的特性,可以通過元素的hashcode直接確定有無解在hashmap裏,可以只便利兩次,時間複雜度(O(n))

    public int[] twoSum(int[] nums, int target) {
     Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], i);
        }
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i];
            if (map.containsKey(complement) && map.get(complement) != i) {
                return new int[] { i, map.get(complement) };
            }
        }
        throw new IllegalArgumentException("No two sum solution");

    }

2.Review:

本次review帶來的是spring官網的對springBoot的描述:地址
Ps:並非逐字逐句翻譯,只是寫出一些我的總結
why springBoot?

  • springboot讓獨立開發變成了現實,因爲只需要很少的配置(just one 【application.properties】)
  • 內置tomcat,jetty容器,不用再打war包
  • springboot封裝了很多jar包變成starter,還可以用spring-boot-starter-parent來統一管理jar包版本,這樣解決了大量的依賴衝突和jar包版本問題
  • springboot會自動裝配第三方依賴jar包
  • 告別代碼配置,xml配置
  • 提供一套度量,健康檢查和配置標準

3.Tip:

linux 的crontab定時任務腳本中一定不要寫相對路徑。因爲你可能測得腳本好好的。但是作爲定時任務執行時。會因爲找不到路徑而與預期執行結果不符(位置在/var/spool/cron)。

4.Share:

分享一篇李智慧老師寫的乾貨吧:軟件設計文檔示例模板

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章