博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] Two Sum
阅读量:6030 次
发布时间:2019-06-20

本文共 1211 字,大约阅读时间需要 4 分钟。

hot3.png

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

思路1:对于每一个元素,遍历寻找另一个元素使得和为target,时间复杂度O(n^2)。

思路2:先排序,然后首尾两个指针向中间靠拢,两指针所指元素大于target,移动尾指针,小于target移动头指针,直至找到结果或者两个指针相遇。时间复杂度O(nlogn)。此方法可推广值3Sum,4Sum等,有待整理。

思路3:利用hashmap,将每个元素值作为key,数组索引作为value存入hashmap,然后遍历数组元素,在hashmap中寻找与之和为target的元素。 时间复杂度O(n),空间复杂度O(n)。

public class Solution {	public int[] twoSum(int[] numbers, int target) {		int len = numbers.length;		int[] result = new int[2];		Map
map = new HashMap
(); for (int i = 0; i < len; i++) { map.put(numbers[i], i); } for (int i = 0; i < len; i++) { int one = numbers[i]; Integer two = map.get(target - one); if (two != null && i < two) { result[0] = i + 1; result[1] = two + 1; break; } } return result; }}

转载于:https://my.oschina.net/jdflyfly/blog/283256

你可能感兴趣的文章
build
查看>>
nutch2.1+mysql报错及解决
查看>>
spring boot打jar包发布
查看>>
《JavaScript高级程序设计》节点层次和DOM操作技术
查看>>
form 提交多个对象及springMVC接收
查看>>
jstl格式化时间
查看>>
一则关于运算符的小例
查看>>
centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
查看>>
cronexpression 详解
查看>>
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
SpringMVC、MyBatis声明式事务管理
查看>>
开发者详解:端游及手游服务端的常用架构
查看>>
动态保持视频文件存取容量VC
查看>>
javascript去掉字符串前后空格
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>
【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
查看>>
php闭包语法学习
查看>>