1 Two Sum (Array)

老的方法O(n2)不太好

System.out array的时候不能直接显示,要用Arrays.toString() 转换下

 

 1 //老的:
 2 
 3 import java.util.Arrays;
 4 
 5 public class Twosum {
 6     public static void main(String[] args) {
 7         Solution s = new Solution();
 8         int[] nums = {2 ,7 ,11, 15};
 9         int[] result = s.twoSum(nums, 9);
10         System.out.println(Arrays.toString(result));
11         
12     }
13 
14 }
15 
16 class Solution {
17     public int[] twoSum(int[] nums, int target) {
18         for (int i = 0; i < nums.length; i++) {
19             for (int j = i+1; j < nums.length; j++) {
20                 if (nums[i] + nums[j] == target) {
21                     int[] result = {i, j};
22                     return result;
23                 }
24             }
25         }
26         return nums;
27         
28     }
29 }
30 
31 
32 
33 
34 //96%:
35 class Solution {
36     public int[] twoSum(int[] nums, int target) {
37         HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
38         int[] res = new int[2];
39         for (int i = 0; i < nums.length; ++i) {
40             if (m.containsKey(target - nums[i])) {
41                 res[1] = i;
42                 res[0] = m.get(target - nums[i]);
43                 break;
44             }
45             m.put(nums[i], i);
46         }
47         return res;
48     }
49 }

 

posted @ 2018-07-23 10:31  jasoncool1  阅读(153)  评论(0)    收藏  举报