今天开启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. Linux IO模型

    1. Linux IO 模型矩阵 2. 同步阻塞IO 3. 同步非阻塞IO 4. 异步阻塞IO 5. 异步非阻塞IO

  2. bzoj 1564 [NOI2009]二叉查找树(树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1564 [题意] 给定一个Treap,总代价为深度*距离之和.可以每次以K的代价修改权值 ...

  3. Bzoj1939 [Croatian2010] Zuma

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

  4. window环境下使用sbt编译spark源码

    前些天用maven编译打包spark,搞得焦头烂额的,各种错误,层出不穷,想想也是醉了,于是乎,换种方式,使用sbt编译,看看人品如何! 首先,从官网spark官网下载spark源码包,解压出来.我这 ...

  5. HDU 2079 选课时间 组合题

    解题报告:最多有8种学分的课,然后每种学分的课最多有10门,问要选学分为n的课一共有多少种选法,注意学分相同的课之间没有区别. 这题暴力可过,我用了8层循环,就简单了.听说可以用母函数,但没学过,看一 ...

  6. 【leetcode 简单】 第六十三题 使用队列实现栈

    使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...

  7. 工具推荐:ATSCAN,功能强大的Perl脚本扫描器

    工具推荐:ATSCAN,功能强大的Perl脚本扫描器 使用perl语言编写的开源的扫描器,功能丰富强大,除了基本的tcp和udp端口扫描之外,还可以搜索wordpress.joomla等网站并进行口令 ...

  8. AS中一些不经常用到的快捷键

    1 书签 添加/移除书签 Ctrl+shift+F11 展示书签 shift+F11 下一个书签  shift+加号 上一个书签  shift+减号 2 折叠/展开代码块 展开代码块  ctrl+加号 ...

  9. Splay算法摘要

    先介绍变量定义 int n; struct Node { //Splay节点定义 ],val,num,siz; //fa:它爸爸:son它儿子,左0右1:val:这个节点的值 //num:这个值的数量 ...

  10. VirtualBox上安装CentOS-7(Minimal)

    Windows 10家庭中文版,VirtualBox 5.2.12,CentOS 7(Minimal版), 因为听到大家在谈论CentOS,阿里云上也有CentOS,CentOS还是Red Hat出品 ...