码迷,mamicode.com
首页 > 其他好文 > 详细

128.Two Sum

时间:2018-08-31 11:46:19      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:假设   nbsp   效率   map   相同   two sum   给定一个整数数组   targe   for   

题目:

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, and you may not use the same element twice.

您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

解答:

 1 class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3         int[] res=new int[2];
 4         HashMap<Integer,Integer> map=new HashMap<>();
 5         for(int i=0;i<nums.length;i++){
 6             if(map.containsKey(target-nums[i])){
 7                 res[0]=i;
 8                 res[1]=map.get(target-nums[i]);
 9                 break;
10             }
11             map.put(nums[i],i);
12         }
13         return res;
14     }
15 }

详解:

暴力破解时间复杂度为O(n2),舍弃不用

HashMap是常数级的查找效率,只遍历一个数字,另一个数字使用HashMap建立数字和其坐标位置之间的映射,所以时间复杂度为O(n)。

128.Two Sum

标签:假设   nbsp   效率   map   相同   two sum   给定一个整数数组   targe   for   

原文地址:https://www.cnblogs.com/chanaichao/p/9564644.html

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