算法思想记录:给定一个整数数组 nums 和一个目标值 target
1.我的目的
记录此题的思路 ----- 灵活运用hashmap/dict提升效率
2.题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
eg. nums = [2, 7, 11, 15], target = 9 返回 [0, 1]
3.解答
解法一:
def a(nums: List[int], target: int) -> List[int]:for indexi,i in enumerate(nums[:len(nums)-1]):for indexj,j in enumerate(nums[indexi+1:]):if i + j == target:return [indexi, indexi + indexj + 1]
两个for循环,显然时间复杂度是不过关的,在网上学习他人的解法
解法二:
def a(nums, target):hashmap = {}for ind, num in enumerate(nums):hashmap[num] = indfor i, num in enumerate(nums):j = hashmap.get(target - num)if j is not None and i != j:return [i, j]
代码很容易看懂,为什么这样效率就能提升很多呢?
我的理解是python 的 dict是使用哈希表实现的,哈希表在数据的存储和查询上几乎可以看做常数时间,就相当于在我们利用hashmap.get的时候不用考虑时间复杂度,这样上面的方法就相当于一个for循环解决了,效率就得到了极大的提升。
(其实一开始我看到网上思路是利用hashmap,第一想法是将序列号放key , 值放value,那么这样就是先获取所有value,遍历找到合适的value,然后又去找value对应key值,其实还是for + for;巧妙的将值作为key是关键的思想)
算法思想记录:给定一个整数数组 nums 和一个目标值 target相关推荐
- 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。
题目描述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k ...
- 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
问: /** 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...
- 给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出和为目标值 target 的那两个整数, 并返回它们的数组下标
题目要求: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标. [注]从前往后进行匹配, 一旦匹配成功, 便结 ...
- 两数之和, 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 可以假设每种输入只会对应一个答案.但是,数组 ...
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
题目链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-2/ 给定一个整数数组 nums ...
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍. ...
- 题目:给定一个整数数组 nums 和一个整数目标值 targ数,并返回它们的数组下标。
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 答案: public class JavaTest {pub ...
- JS实现 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
题目:(JS实现) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 四种方法如下: 方法一:暴力破解法,和值匹配 //暴力 ...
- java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
标题:java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 一.示例 二.题解 方法一,暴力法:使用双重for循环,每 ...
最新文章
- plsql programming 10 日期和时间戳
- 科创板首发过会,格灵深瞳“三变”交出IPO答卷
- Centos6.9部署ORTS5.0.22
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
- delphi测试服务器响应时间,负载测试中的页面响应时间 - Visual Studio (Windows) | Microsoft Docs...
- springboot 双缓存设计与使用
- Android开发笔记(六十九)JNI实战
- ubuntu18.04,Linux使用远程连接工具连接失败解决
- 大数据分析给企业带来哪些挑战
- xshell连接虚拟机(后续)
- selenium 实现循环点击_webdriver处理循环点击
- 小程序wxParse
- ios手机上java最好的编辑器_程序员编程利器:20款最好的免费的IDEs和编辑器
- Mac Chrome 安装插件(无VPN)
- 计算机基础知识——二进制
- android相对控件居中对齐,相对布局(RelativeLayout)常用属性
- android快速充电实现_手机充电ic介绍以及怎么用充电IC实现手机快速充电
- WaveDrom画时序波形
- 演讲达人成长记作者1月26日西单图书大厦现场讲座
- Python函数和装饰器