今天开启leetcode

入门第一题

题意很简单,就是一个数组中求取两数之和等于目标数的一对儿下标

1.暴力 n^2

两个for循环遍历

用时0.1s 开外

代码就不用写了

2.二分 nlogn

我们可以遍历选择每一个元素 ,然后二分剩余(target - ai)

(一)从全序列二分剩余

这就需要考虑下标和自己重叠的情况,比如【3,3】,target:6

于是我们就需要判重叠

代码就长成下面这样了(8ms)

class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
multimap<int, int> P;
for (int i = ; i < nums.size(); ++i)
P.insert(pair<int, int>(nums[i], i));
for (auto i : P)
{
map<int, int>::iterator j = P.find(target - i.first); if (j != P.end() && i.first + j->first == target)
{
if (i.second == j->second)
{
++j;
if (i.first + j->first != target)continue;
}
vector<int> V;
V.push_back(i.second);
V.push_back(j->second);
return V;
}
}
}
};

因为后面四行用于return的代码太长了,看着不舒服,于是改成了

int a[]{i.second,j->second};
return vector<int>(a,a+);

额外加时了4ms。。还是算了=.=

(二)从当前位置之前二分剩余

接着看了下这道题的提交情况,发现竟然有4ms过的,(当然也有0ms的,非正常人,这个可以忽略)

官方代码:

结果跑了8ms,可能是我脸黑,也可能数据增加了,或者,是个玄学测评机?

可以看到这个代码就属于从头到尾一次插入,刚开始是空的,边找边插,找完之后再把当前位置插入序列,这样就可以避免找到自己本身

咦~,这貌似是个好办法,学习了~

到此,还不能说明方法(一)不好或者方法(一)略微复杂

我们对于找答案佛系一点,或许就,见到了奇迹

【3,3】target = 6,同样,第一次(3,0)会找到(3,0),我们可以跳过,(3,1)自然会找到(3,0)进行匹配,自动化随缘法

另:leetcode可能不支持unordered_map或者unordered_multimap中的lower_bound和upper_bound,我也不清楚到底有没有,我只知道VS是有的。

这篇单单是记录一下leetcode初体验,给出的样例题目当然非常简单了,欢迎大伙儿入坑~

感谢您的阅读,生活愉快~

leetcode 入门第一题 4ms? 8ms? Two Sum的更多相关文章

  1. LeetCode第[1]题(Java):Two Sum 标签:Array

    题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

  2. LeetCode第[1]题(Java):Two Sum (俩数和为目标数的下标)——EASY

    题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

  3. LeetCode【第一题】Two Sum

    准备刷一刷LeetCode了. 题目: ''' Given an array of integers, return indices of the two numbers such that they ...

  4. CTF---编程入门第一题 循环

    循环分值:10 来源: 北邮天枢战队 难度:易 参与人数:1478人 Get Flag:467人 答题人数:523人 解题通过率:89% 给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1, ...

  5. CTF---隐写术入门第一题 SB!SB!SB!

    SB!SB!SB!分值:20 来源: 西普学院 难度:中 参与人数:4913人 Get Flag:1541人 答题人数:1577人 解题通过率:98% LSB 解题链接: http://ctf5.sh ...

  6. CTF---安全杂项入门第一题 丘比龙的最爱

    丘比龙的最爱分值:10 来源: 2014HCTF 难度:易 参与人数:4498人 Get Flag:1366人 答题人数:1384人 解题通过率:99% 传说,丘比龙是丘比特的弟弟,丘比龙是一只小爱神 ...

  7. CTF---密码学入门第一题 这里没有key

    这里没有key分值:10 来源: 西普学院 难度:易 参与人数:5577人 Get Flag:1965人 答题人数:2074人 解题通过率:95% 你说没有就没有啊,俺为啥要听你的啊 解题链接: ht ...

  8. CTF---Web入门第一题 what a fuck!这是什么鬼东西?

    what a fuck!这是什么鬼东西?分值:10 来源: DUTCTF 难度:易 参与人数:7942人 Get Flag:3358人 答题人数:3475人 解题通过率:97% what a fuck ...

  9. 【LeetCode每天一题】Minimum Path Sum(最短路径和)

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

随机推荐

  1. ASP.NET中常用输出JS脚本的类(来自于周公博客)

    using System; using System.Collections.Generic; using System.Text; using System.Web; using System.We ...

  2. Bzoj1939 [Croatian2010] Zuma

    Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 43  Solved: 31 Description 有一行 N 个弹子,每一个都有一个颜色.每次可以让超过 ...

  3. hadoop启动步骤

    一.ssh的启动 ssh localhost二.hadoop的HDFS的格式化 bin/hadoop namenode -format三.hadoop的start-all.sh的启动 bin/tart ...

  4. mysql 时间戳

    需求:记录表中每条记录创建时间和最新修改时间 一.界面操作 工具:mysql-front 右键添加字段createTime和updateTime,字段类型为timestamp 完成,在表中添加一条新纪 ...

  5. c# 生成随机N位数字串(每位可以重复)

    /// <summary> /// 生成随机数字窜 /// </summary> /// <param name="Digit">位数</ ...

  6. 浏览器断点调试js

    说了一些 Chrome 开发者工具的技巧,其实并没有涉及到开发者工具最核心的功能之一:断点调试.断点可以让程序运行到某一行的时候,把程序的整个运行状态进行冻结.你可以清晰地看到到这一行的所有的作用域变 ...

  7. 【洛谷】P1445 没占到1444的愤怒

    继续洛谷刷水日常,突然遇到一道不是很水的题目…… https://www.luogu.org/problem/show?pid=1445 题意:给定n(1<=n<=1000000),求方程 ...

  8. 42 - 数据库-orm-SQLAlchemy

    目录 1 ORM 2 sqlalchemy 3 基本使用 3.1 创建连接 3.1.1 利用连接池执行sql 3.1.2 利用session来执行sql 3.2 创建基类 3.3 创建实体类 3.3. ...

  9. linux之发送邮件--sendmail服务配置

    新手入门也不知道什么日志分析服务好,鸟哥说logwatch,那我就从logwatch开始吧! logwatch用到了emai发邮件,先从配置邮件发送sendmail开始: 安装sendmail服务,我 ...

  10. echarts 移动端地图数据可视化开发教程

    如上效果图: 以下未代码: <!doctype html> <html lang="en">   <head> <meta charset ...