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

本文共 1353 字,大约阅读时间需要 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=9

Output: index1=1, index2=2

【题意】

1. 从所给的列表中找出两个数,这两个数的和与给定的target值同样。返回这两个值的位置(保持相对顺序)

2. 所给測试用例保证有且仅仅有一个唯一解

【思路】

1. 绑定值和相应的位置 复杂度O(n)

2. 对值进行升序排序  复杂度O(nlogn)

3. 用两个指针p1,p2分别从前后两个方向逼近target。

当两指针之和小于target,则p1++

当两指针之和大于target。则p2--

【代码】

struct Node{    int index;    int value;    Node(){};    Node(int i, int v):index(i), value(v){};};bool compare(const Node &n1, const Node &n2){    return n1.value < n2.value;}class Solution {public:    vector
twoSum(vector
&numbers, int target) { vector
nodes; for(int i=0; i
indexs; while(p1 < p2){ int sum = nodes.at(p1).value + nodes.at(p2).value; if(sum == target){ indexs.push_back(min(nodes.at(p1).index, nodes.at(p2).index)); indexs.push_back(max(nodes.at(p1).index, nodes.at(p2).index)); break; } else{ if(sum < target) p1++; else p2--; } } return indexs; }};

转载于:https://www.cnblogs.com/mfrbuaa/p/5212312.html

你可能感兴趣的文章
视觉设计师的进化
查看>>
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Lua 语言基本语法
查看>>
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
元类中__new__ 与 __init__的区别--day27
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>