128.Two Sum
Posted chanaichao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了128.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, 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的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段