java解法
解題思路:常規(guī)解法為,先選定一個元素咳燕,遍歷數(shù)組去查找是否存在另一個元素季蚂,和這個元素相加等于總和茫船,這樣整體的時間復(fù)雜度為O(n^2)。在加快查找方面扭屁,使用hash結(jié)構(gòu)是很好的選擇算谈,于是,將已經(jīng)出現(xiàn)過的元素放到hashmap中料滥,可以直接判斷是否存在另一個元素濒生,時間復(fù)雜度為O(n)。
class Solution {
? ? public int[] twoSum(int[] nums, int target) {
? ? ? ? // 利用hashMap加快另一個元素的查找
? ? ? ? Map<Integer, Integer> map = new HashMap<>();
? ? ? ? for (int i = 0; i < nums.length; i++) {
? ? ? ? ? ? int m = target - nums[i];
? ? ? ? ? ? if (map.containsKey(m)) {
? ? ? ? ? ? ? ? return new int[] {map.get(m), i};
? ? ? ? ? ? }
? ? ? ? ? ? map.put(nums[i], i);
? ? ? ? }
? ? ? ? throw new IllegalArgumentException("no two number");
? ? }
}