码迷,mamicode.com
首页 > 编程语言 > 详细

Java for LeetCode 001 Two Sum

时间:2015-04-23 21:19:09      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

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

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

 

解题思路一

暴力枚举,时间复杂度O(n^2),另外由于target是两个数字的和,因此即便数组有序也只能采用暴力枚举的方法。

解题思路二

由于图的遍历所需时间开销比较固定,因此可以使用HashMap,以数组的内容为key,以数组下标为Value,这样时间复杂度为O(n)。

因此,第一步:将数组元素存入HashMap里面;第二步:将对于numbers[]的每个值,用target-numbers[i]在图中进行遍历,如果发现存在这样的值,并且这样的值不是numbers[i]对应的节点本身,那么,遍历结束。

Java代码如下:

 

 1 import java.util.HashMap;
 2 public class Solution {
 3     static public int[] twoSum(int[] numbers, int target) {
 4         int[] a={0,0};
 5         HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
 6         for(int i=0;i<numbers.length;i++){
 7             map.put(numbers[i], i);
 8         }
 9         for(int i=0;i<numbers.length;i++){
10             int gap=target-numbers[i];
11             if((map.get(gap)!=null)&&map.get(gap)!=i){
12                 a[0]=i+1;
13                 a[1]=map.get(gap)+1;
14                 break;
15             }
16         } 
17         return a;
18     }
19 }

 

Java for LeetCode 001 Two Sum

标签:

原文地址:http://www.cnblogs.com/tonyluis/p/4451747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!