Leetcode --- Two Sum (Easy) === ## Description: 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. ### Constrains: * 2 <= nums.length <= 10^4^ * -10^9^ <= nums[i] <= 10^9^ * -10^9^ <= target <= 10^9^ * Only one valid answer exists. ### Example **Input:** nums = [2,7,11,15], target = 9 **Output:** [0,1] **Explanation:** nums[0] + nums[1] == 9, we return [0, 1]. ## Solutions: * ### Method 1 : Brute Force solve (in C) ```C= /** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target, int* returnSize) { *returnSize = 2; for(int i =0;i< numsSize;i++) { for(int j=i+1;j<numsSize;j++) { if(nums[i] + nums[j] == target) { int* res = (int*) malloc(2*sizeof(int)); res[0]=i; res[1]=j; return res; } } } return NULL; } ``` ### Submissions on Leetcode Runtime: **84 ms**, faster than 5.44% of C online submissions for Two Sum. Memory Usage: **6.6 MB**, less than 6.64% of C online submissions for Two Sum. * ### Method 2 : Hash solve(in java) ```java= import java.util.*; class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(); int k =0; for(int tmp : nums) { map.put(tmp,k); k++; } for(int i=0;i<nums.length;i++) { int duel = target - nums[i]; if( map.containsKey(duel) && map.get(duel) != i) { return new int[]{i,map.get(target -nums[i])}; } } return new int[]{0}; } } ``` ### Submissions on Leetcode Runtime: **3 ms**, faster than 61.45% of Java online submissions for Two Sum. Memory Usage: **40.4 MB**, less than 13.43% of Java online submissions for Two Sum. ### *Note:* Map 類別分支: * Map(**interface**) * ==inheritance== * SortMap(**interface**) * NavigableMap(**interface**) * ConcuuentMap(**interface**) * ==implements== * HashMap(**class**) * TreeMap(**class**) * WeakHashMap(**class**) * EnumMap(**class**) * LinkedHashMap(**class**) ## Complexity Analysis * Brute Force =>==O(n^2^)== * Hash depends on Hash's mehtod,containsKey() or get(), =>==O(n)== ## Conclusion 學習java Map類用法. ###### tags: `Leetcode` `Easy` `Array`