題型解說
這是一題難度為簡單的題目,主要是用來暖個身
需要設計一個方法,此方法有兩個參數
第一個參數是一個數字的數組,第二個參數是一個目標數字
要求是找出數組中哪兩個數字相加等於目標數字
回傳索引
解題思路
大多數人(包括我)的第一印象就是利用兩個迴圈來計算出結果
當然相信這種方法也是可以得出一樣的答案
但是效率上就會比較低效
而且也過不了LeetCode的測試案例
所以得換個方式,利用空間換取時間
創建一個Map,Key紀錄數字、Value紀錄索引
目標數減去當下數字的差存在Map中,直接回傳結果
不存在則將當下數字存入Map
程式碼
Java
public class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> temp = new HashMap<>();
for (int i = 0, len = nums.length; i < len; ++i) {
int j = target - nums[i];
if (temp.containsKey(j) == true) {
return new int[] {temp.get(j), i};
}
temp.put(nums[i], i);
}
return null;
}
}