Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
Constraints:
2 <= nums.length <= $10^4$- $
-10^9$ <= nums[i] <= $10^9$ - $
-10^9$ <= target <= $10^9$
題目給定一個整數陣列 nums, 還有一個整數 target
要求寫一個演算法來找出 nums 兩個元素相加 = target 的index
可以透過 hashtable 把經過的值暫存下來
假設每次透過 index來找尋
每次 檢查 (target - nums[index]) 有沒有 hashTable 內
有則回傳 index 與 target - nums[index]
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
HashMap<Integer, Integer> hash = new HashMap<>();
int nLen = nums.length;
for (int idx = 0; idx < nLen; idx++) {
if (hash.containsKey(target-nums[idx])) {
return setWithOrder(idx, hash.get(target-nums[idx]));
}
hash.put(nums[idx], idx);
}
return result;
}
public static int[] setWithOrder(int numberToCompare, int numberBeCompared) {
return (numberToCompare > numberBeCompared)? new int[]{numberBeCompared, numberToCompare}:
new int[]{numberToCompare, numberBeCompared};
}
}- 理解 HashTable 運作方式
- Understand what problem to solve
- Analysis Complexity