1. 程式人生 > >Array——LeetCode——Two Sum

Array——LeetCode——Two Sum

bsp nbsp shm hashmap for [1] 解法 twosum urn

【學到的知識點——HashMap】
1、HashMap是鏈表+數組的組合方式(結合模型來思考)
數組尋址容易,插入和刪除困難
鏈表正好相反
HashMap正好將二者互補了一下
2、對一個HashMap鍵值對的查找,是分為四步的
1)先根據key值計算出hash值以及h值(h值是java實現中處理得到的更優的index索引值)
2)查找table數組中的h位置,得到相應的鍵值對鏈表
3)根據key值,遍歷鍵值對鏈表,找到相應的鍵值對,
4)從鍵值對中取出value值。
3、HashMap的優化
主要是對Hash算法的優化
4、Arrays是一個工具類,有很多有用的方法
【學到的知識點——數組】
1、嵌套循環怎麽跳出
用return跳出
-----------------------------------------------------------------------------------------------------
【反思】
初略一看很容易就從雙重循環入手來解決這道題。我們應該在想出一個辦法後,緊接著想想是否還能優化,用空間換時間之類的。
-----------------------------------------------------------------------------------------------------

【Java解法】
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
HashMap<Integer, Integer> m = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
m.put(nums[i], i);
}

for(int i = 0; i < nums.length; i++) {
int t = target - nums[i];
if (m.containsKey(t) && m.get(t) != i) {
result[0] = i;
result[1] = m.get(t);
break;
}
}
return result;
}
}

Array——LeetCode——Two Sum