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

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

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=9Output: index1=1, index2=2

思路

排序后两个指针一个从前往后,一个从后往前逼近。需要小心的是当输入数组可有重复的数字,所以需要先保存每个数字在哪些位置出现过以备查询。

1 class Solution { 2 public: 3     vector
twoSum(vector
&numbers, int target) { 4 vector
result; 5 map
> indexes; 6 int i, j, size = numbers.size(); 7 8 for (i = 0; i < size; ++i) { 9 indexes[numbers[i]].push_back(i + 1);10 }11 12 sort(numbers.begin(), numbers.end());13 i = 0; 14 j = size - 1;15 16 while (i < j) {17 if ((numbers[i] + numbers[j]) < target) {18 ++i;19 }20 else if ((numbers[i] + numbers[j]) > target) {21 --j;22 }23 else {24 vector
::iterator left = indexes[numbers[i]].begin();25 vector
::iterator right = indexes[numbers[j]].begin();26 27 if (left == right) {28 ++right;29 }30 31 result.push_back((*left < *right) ? *left : *right);32 result.push_back((*left < *right) ? *right : *left);33 34 break;35 }36 }37 38 return result;39 }40 };

 

转载于:https://www.cnblogs.com/panda_lin/p/two_sum.html

你可能感兴趣的文章
二叉树的遍历问题总结
查看>>
3.14-3.20周总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
luogu4012 深海机器人问题 网络流
查看>>
android 拍照上传照片
查看>>
ArchLinux安装开源VMware Tools
查看>>
系统用户分析模型
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
jsp题库 (一)小测(25/21)
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>