LeetCode 1. 两数之和(哈希)

文章目录

    • 1. 题目
    • 2. 解题
      • 1. 暴力解法
      • 2. 哈希法
      • 3. python3解答

1. 题目

题目链接:https://leetcode-cn.com/problems/two-sum/

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

2. 解题

1. 暴力解法

每个元素都跟后面的比较,n2 复杂度
在这里插入图片描述

class Solution 
{
public:vector<int> twoSum(vector<int>& nums, int target) {int i,j;vector<int> ans;for(i = 0; i < nums.size()-1; ++i){for(j = i+1; j < nums.size(); ++j){if(nums[i]+nums[j] == target){ans.push_back(i);ans.push_back(j);return ans;}}}return ans;}
};

2. 哈希法

利用unordered_map哈希查找,先建立哈希表O(n),再查找O(n)
在这里插入图片描述

//哈希法
class Solution 
{
public:vector<int> twoSum(vector<int>& nums, int target) {int i, d;vector<int> ans;unordered_map<int,int> unomap;//unordered_map是哈希表for(i = 0; i < nums.size(); ++i)//建立哈希表unomap[nums[i]] = i;//哈希数组下标是值,存的原来的下标for(i = 0; i < nums.size(); ++i){d = target - nums[i];if(unomap.find(d) != unomap.end() && unomap[d]>i){//如果查找到了,且不是同一个元素ans.push_back(i);ans.push_back(unomap[d]);break;}}return ans;}
};
  • 优化,只需要一次遍历
class Solution {	// 2020.10.3 
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> m;int number;for(int i = 0; i < nums.size(); ++i){number = target-nums[i];if(m.find(number) != m.end())return {i, m[number]};m[nums[i]] = i;}return {};}
};

3. python3解答

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:dic = {}for i in range(len(nums)):dic[nums[i]] = ifor i in range(len(nums)):if (target-nums[i]) in dic and dic[target-nums[i]] > i:return [i,dic[target-nums[i]]]return [-1,-1]

在这里插入图片描述


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | TuckER:基于张量分解的知识图谱补全

笔记整理&#xff1a;孙泽群&#xff0c;南京大学计算机科学与技术系&#xff0c;博士研究生。论文链接&#xff1a;https://arxiv.org/abs/1901.09590背景知识图谱是图结构的数据库&#xff0c;以三元组(es, r, eo)的形式存储事实&#xff0c;其中es和eo分别表示主语和宾语实体…

阿里Java P系列技术要求(P5-P7)

阿里p系列薪资&#xff08;最新数据比这个高1倍左右&#xff09; 阿里P5&#xff08;高级研发工程师&#xff09; 工作要求&#xff1a; 能独立完成日常工作&#xff0c;并能够对一些方案提出自己的建议。 基本考核就是能上手独立完成工作&#xff0c;熟练掌握。 技能要求…

一篇文章学习Python中的多线程

基本知识&#xff1a;一、什么是多线程Threading二、添加线程Thread三、join功能四、存储进程结果Queue五、GIL不一定有效率六、线程锁 Lock一、什么是多线程Threading 二、添加线程Thread import threading # 导入模块print(threading.active_count()) …

银行技术类2020校园招聘笔试

2019年10月13日 一 选择题 包含银行的成立时间&#xff0c;最大股东&#xff0c;行徽&#xff0c;最大堆&#xff0c;平衡二叉树&#xff0c;二叉排序树&#xff0c;sql基本操作&#xff0c; 函数的调用次数&#xff0c;一串代码的具体输出&#xff0c;网桥&#xff0c;网络协议…

如何配置一台深度学习工作站?

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术这篇文章主要介绍的是家用的深度学习工作站&#xff0c;典型的配置有两种&#xff0c;分别是一个 GPU 的机器和四个 GPU的机器。如果需要更多的 GPU 可以考虑配置两台四个 GPU 的机器。如果希望一台机器同时具…

LeetCode 2. 两数相加(单链表反转)

题目链接&#xff1a;https://leetcode-cn.com/problems/add-two-numbers/ 给出两个 非空 的链表用来表示两个非负的整数。其中&#xff0c;它们各自的位数是按照 逆序 的方式存储的&#xff0c;并且它们的每个节点只能存储 一位 数字。 如果&#xff0c;我们将这两个数相加起…

报名 | 全国知识图谱与语义计算大会(CCKS 2019)评测任务发布

全国知识图谱与语义计算大会是由中国中文信息学会语言与知识计算专委会定期举办的全国年度学术会议。CCKS 2018吸引了来自学术界和工业界的超800人参加。2019 年全国知识图谱和语义计算大会(www.ccks2019.cn) 将于2019年8月24日至8月27日在杭州召开&#xff0c;CCKS 2019的主题…

一篇文章学习Python中的多进程

基本知识&#xff1a;一、什么是多进程 Multiprocessing二、添加多进程 Process三、存储进程输出 Queue四、效率对比 threading & multiprocessing五、进程池 Pool六、共享内存 shared memory七、进程锁 Lock一、什么是多进程 Multiprocessing 支持并行运算&#xff0c;充…

UML是什么?UML常用图以及建模工具有哪些?

“ 在做项目设计方案的时候&#xff0c;理解为需求后&#xff0c;我们都会做技术设计方案&#xff0c;这个时候就需要用到UML建模&#xff0c;涉及到UML常用图形以及工具画图&#xff0c;以下我会详细介绍UML图形和我个人推荐的UML建模工具。 UML即Unified Model Language&am…

炼丹必备!推荐一个超级好用的机器学习云平台

矩池云是一个专业的国内深度学习云平台&#xff0c;拥有着良好的深度学习云端训练体验&#xff0c;和高性价比的自建GPU集群资源。高性价比矩池云拥有很高的性价比&#xff0c;其的计费方式主要分为按时租与按周/月租。按时租用采用的是分钟级的实时计费模式&#xff0c;满足了…

直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

JVM基本是BAT面试必考的内容&#xff0c;今天我们先从JVM内存模型开启详解整个JVM系列&#xff0c;希望看完整个系列后&#xff0c;可以轻松通过BAT关于JVM的考核。 BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃圾回收算法 3.JVM垃圾回收器 4.JVM参数详解 5.JVM性能调优 JV…

论文浅尝 | 基于平行新闻的Bootstrapping关系抽取

笔记整理&#xff1a;吴锐&#xff0c;东南大学大四本科生&#xff0c;研究方向为自然语言处理。Citation&#xff1a;Michael Glass, K. B. . (2012). Bootstrapping relation extraction using parallel news articles. Retrieved from https://pdfs.semanticscholar.org/bfa…

动态规划应用--最长递增子序列 LeetCode 300

文章目录1. 问题描述2. 解题思路2.1 动态规划2.2 二分查找1. 问题描述 有一个数字序列包含n个不同的数字&#xff0c;如何求出这个序列中的最长递增子序列长度&#xff1f;比如2&#xff0c;9&#xff0c;3&#xff0c;6&#xff0c;5&#xff0c;1&#xff0c;7这样一组数字序…

常见的面试题整理 -python

常见的面试题整理 在这里插入代码片 #二分查找def binarySearch(alist, item):first0;lastlen(alist)-1;while first < last:mid(firstlast)/2;print(mid)if alist[mid]>item:lastmid-1;elif alist[mid]<item:firstmid1return -1test[0,1,2,8,13,17,19,9,0]print(bin…

Python中的全局变量

一、全局变量的定义与调用 在主进程中定义的变量属于全局变量&#xff0c;如下面的变量a、b、c&#xff0c;都是全局变量。 如果只是调用全局变量&#xff0c;不对其进行修改&#xff0c;可直接调用。 a 1 b [2,2]def f1():print(a)print(b)print(c) if __name__ __mai…

论文浅尝 | 5 篇顶会论文带你了解知识图谱最新研究进展

本文转载自公众号&#xff1a;PaperWeekly。精选 5 篇来自 ICLR 2019、WSDM 2019、EMNLP 2018、CIKM 2018和IJCAI 2018 的知识图谱相关工作&#xff0c;带你快速了解知识图谱领域最新研究进展。WSDM 2019■ 论文解读 | 张文&#xff0c;浙江大学在读博士&#xff0c;研究方向为…

LeetCode 53. 最大子序和(动态规划)

文章目录1. 题目描述2. 解题2.1 暴力求解2.2 动态规划1. 题目描述 题目链接&#xff1a;https://leetcode-cn.com/problems/maximum-subarray/ 《剑指Offer》同题&#xff1a;面试题42. 连续子数组的最大和 给定一个整数数组 nums &#xff0c;找到一个具有最大和的连续子数组…

java程序员的发展之路和职业规划

在互联网做技术的朋友&#xff0c;往往没有足够的重视&#xff0c;职业规划其实一点都不虚&#xff0c;而是一件非常实在的事情&#xff0c;如果你不是每次碰墙再反思职业规划&#xff0c;而是提前3年左右作出下一步的规划&#xff0c;你早已经走出了一条属于自己的路。 以下是…

Python多进程中多参数问题

要注意的一点是&#xff1a;传递给进程的参数必须是可序列化的&#xff0c;常见的数据类型都是可序列化的&#xff0c;自定义的类一般是不可序列化的&#xff0c;&#xff08;在java中有将自定类写为可序列化的方式&#xff0c;不知道python中有没有&#xff0c;懒得查了&#…

机器学习(Machine Learning)、深度学习(Deep Learning)、NLP面试中常考到的知识点和代码实现

网址&#xff1a;https://github.com/NLP-LOVE/ML-NLP 此项目是机器学习(Machine Learning)、深度学习(Deep Learning)、NLP面试中常考到的知识点和代码实现&#xff0c;也是作为一个算法工程师必会的理论基础知识。 http://mantchs.com/ 此项目是机器学习、NLP面试中常考到的…