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:
分享一篇李智慧老師寫的乾貨吧:軟件設計文檔示例模板