LeetCode(Two Sum)
来源:互联网 发布:淘宝的唐麦耳机怎么样 编辑:程序博客网 时间:2024/06/14 05:28
题目要求:
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
思路: 先将原始数组复制到临时数组然后一前一后指针查找, 找到后再在原数组中找到原始位置。
class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { vector<int> tmp(numbers); sort(tmp.begin(), tmp.end()); int idx1 = 0, idx2 = numbers.size() - 1; while(idx1 < idx2) { if(target < (tmp[idx1] + tmp[idx2])) --idx2; else if(target > (tmp[idx1] + tmp[idx2])) ++idx1; else break; } vector<int> ret; int a = tmp[idx1], b = tmp[idx2]; idx1 = -1, idx2 = -1; for (size_t i = 0; i < numbers.size(); ++i) { if (numbers[i] == a || numbers[i] == b) { if(idx1 == -1) idx1 = i + 1; else idx2 = i + 1; } } if(idx1 > idx2) swap(idx1, idx2); ret.push_back(idx1); ret.push_back(idx2); return ret; }};
代码:
0 0
- 【Leetcode】Two Sum (Sum)
- LeetCode: Two Sum
- LeetCode: Two Sum
- [Leetcode] Two Sum
- LeetCode : Two Sum
- Leetcode: Two Sum
- leetcode 46: Two Sum
- [LeetCode] Two Sum
- LeetCode 1 - Two Sum
- Leetcode : Two Sum
- 【leetcode】Two Sum
- [LeetCode]Two Sum
- leetcode Two Sum
- [Leetcode] Two Sum
- [leetcode] Two Sum
- LeetCode - Two Sum
- leetcode之Two Sum
- LeetCode | Two Sum
- UINavigationController 返回总结
- 数据库范式(1NF 2NF 3NF BCNF)详解一
- 面试经典(17)--二叉树中和为某一值的路径
- 3D空间坐标系认识
- C/C++指针、数组和引用
- LeetCode(Two Sum)
- 解决MyEclipse update progress错误的方法
- 背包问题九讲笔记———01背包
- 黑马程序员_单例设计模式
- 《MQL4实用编程》读书笔记(2) - 交易操作的编程:基本交易知识
- NYOJ96n-1位数
- RMQ问题
- 少年不努力,老来送快递
- 华为2013年财报解读:收入超爱立信 研发高投入