Leetcode #1 Two Sum
来源:互联网 发布:ajax获取数据 编辑:程序博客网 时间:2024/05/22 01:36
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
大意:给出一个整型数组,给了一个目标数(target),从数组里找出两个数使得他们的和等于target。返回这两个数的下标(下标从1开始)
分析:排序,然后i指向最小的开头,j指向最大的末尾,如果i+j>target那么j往前移动,如果i+j<target那么i往后移动,如果i+j=target,返回i,j的下标(这里指的是未排序前的下标)。所以排序前,先把每个数字的原始下标记录下来。
代码:
struct Node{ int num, pos;};bool cmp(Node a, Node b){ return a.num < b.num;}class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> result; vector<Node> array;
<span style="white-space:pre"></span>//记录原始下标
for (int i = 0; i < numbers.size(); i++) { Node temp; temp.num = numbers[i]; temp.pos = i; array.push_back(temp); } sort(array.begin(), array.end(), cmp); for (int i = 0, j = array.size() - 1; i != j;) { int sum = array[i].num + array[j].num; if (sum == target) { if (array[i].pos < array[j].pos) { result.push_back(array[i].pos + 1); result.push_back(array[j].pos + 1); } else { result.push_back(array[j].pos + 1); result.push_back(array[i].pos + 1); } break; } else if (sum < target) { i++; } else if (sum > target) { j--; } } return result; }};
0 0
- LeetCode 1 - Two Sum
- leetcode 1 Two Sum
- Leetcode【1】:Two Sum
- [leetcode 1] Two Sum
- 【leetcode-1】Two Sum
- [leetcode 1] Two Sum
- [Leetcode] 1 - Two Sum
- LeetCode (1) Two Sum
- LeetCode 1:《Two Sum》
- LeetCode | #1 Two Sum
- leetcode-1 Two Sum
- Two Sum | LeetCode(1)
- [Leetcode]1Two Sum
- leetcode 1 Two Sum
- leetcode #1 Two Sum
- leetcode 1:Two Sum
- LeetCode 1 Two Sum
- leetcode #1 two sum
- 基于TCP与UDP的windows网络编程
- OpenStack源码系列---neutron-server
- 世外桃源:青之岛
- 暑期计划
- 同样是经历过,为什么我们还有差距?
- Leetcode #1 Two Sum
- c++设计模式---代理模式
- 黑马程序员——java基础(多线程)
- ORACLE9i_性能调优基础十(Oracle Blocks Efficiently)
- week9---4月29日
- 电脑开关那几个小插头怎么插
- 最长回文子串
- 成佩涛chengpeitao
- c++设计模式---适配器模式