1. Two Sum

题目描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

Solution One:使用两重循环解决
 1 public class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3         int[] result = {0,1};
 4          for (int i = 0; i < nums.length-1; i++) {
 5              for (int j = i+1; j < nums.length; j++) {
 6                  if (nums[i] + nums[j]==target) {
 7                      result[0]=i;
 8                      result[1]=j;
 9                      return result;
10                  }
11              }
12          }
13          return result;
14     }
15 }

 



Solution Two:使用hashmap,把数组装入map中,把数组值定为key,小标定为value,然后对于数组中的每一个key,遍历去寻找其他key,满足相加可以等于target:

 1    public int[] twoSum(int[] numbers, int target) {
 2         Map<Integer,Integer> map = new HashMap<Integer, Integer>();
 3         for (int i=0;i<numbers.length;i++) {
 4             map.put(numbers[i], i);
 5         }
 6         for (int i=0;i<numbers.length;i++) {
 7             int dif = target-numbers[i];
 8             Integer index = map.get(dif);
 9               
10             if (index!=null && i!=index) {
11                 if (index>i)
12                     return new int[]{i,index};
13                 else
14                     return new int[]{index,i};
15             }
16         }
17           
18         return null;
19     }
20 }

 

 
posted @ 2016-03-06 11:56  crazybuddy  阅读(118)  评论(0编辑  收藏  举报