首页 > 其他分享 >力扣(leetcode) 1. 两数之和(暴力枚举) (哈希表)

力扣(leetcode) 1. 两数之和(暴力枚举) (哈希表)

时间:2022-10-27 20:01:49浏览次数:61  
标签:target nums 力扣 num hashtable 哈希 leetcode 两数


题目在这:https://leetcode-cn.com/problems/two-sum/

nums = [2,7,11,15]
target = 9
这题还是比较容易想到的,题目要求在nums数组里找俩不同位置的数他们相加等于给的target就行了,
直接想到两层for暴力循环匹配就可以了,不知道会不会超时,

上代码!

= [3,2,4]
target = 6
res = []
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
res.extend([i,j])
print(res)

这段代码没什么好说的 直接暴力匹配解就行了,大家拿去跑一段就懂了。

提交到leetcode,差点超时。

力扣(leetcode) 1. 两数之和(暴力枚举) (哈希表)_数据


最下面那个就是暴力枚举的时间,上面两个是哈希表,差的挺多。

下面说一下哈希表的解法,实际就是python里的字典.

我们知道 nums里的两个数相加等于 target。
也就是说,
target - nums里的一个数 = nums里的另一个数
且题目中说每次只对应一种答案,所以我们创建哈希表 key存nums里的数值,value里存该数对应的数组下标

上代码!

nums = [3,2,4]
target = 6
hashtable = {} # 创建哈希表
for i, num in enumerate(nums):
if target - num in hashtable:
return [hashtable[target - num], i]
hashtable[nums[i]] =

enumerate方法可以吧一个列表遍历,组合为一个索引序列,同时列出数据和数据下标.

对于上面的方法再优化一下,实际上还能再快一点点就是把…
if target - num in hashtable 换成
if target - num in hashtable.keys()


标签:target,nums,力扣,num,hashtable,哈希,leetcode,两数
From: https://blog.51cto.com/u_15849381/5801756

相关文章

  • 力扣(leetcode) 1035. 不相交的线 (公共子序列)(动态规划)
    题目在这:https://leetcode-cn.com/problems/uncrossed-lines/这道题就是考一个公共子序列的问题,不过这种算法对于我这种小白来说还是难,毕竟leetcode上第一次刷到动态规划......
  • 力扣(leetcode) 12. 整数转罗马数字 (哈希映射表解法)、(暴力匹配)
    题目:https://leetcode-cn.com/problems/integer-to-roman/题目很好理解,并且容易想到解法。题目要求输入范围是1-3999可以理解为在每一位上找到相应的罗马数字表示即可比如......
  • 力扣(leetcode) 692. 前K个高频单词
    题目:https://leetcode-cn.com/problems/top-k-frequent-words/这个题用python解起来还是挺简单的,用字典就行了。key存单词value存出现的次数dic={}res=[]foriinr......
  • 哈希表——快乐数
    #include<iostream>#include<unordered_set>usingnamespacestd;//取数值各个位上的单数平方之和intgetSum(intn){ intsum=0; while(n) { sum+=(n%......
  • 求两数组交集的两种算法
    //方法一:用哈希表的思路,将数组转换为对象varintersect1=function(nums1,nums2){  letobj={},arr=[];  for(leti=0;i<nums1.length;i++){......
  • 力扣-4-寻找两个正序数组的中位数
    中位数的定义是什么?有序数列中位置中间的数字如果中间位置有两个返回则他们的平均值,所以这里的返回值是个double要求时间复杂度为log(m+n),也就是说只对两个数组做一次遍......
  • 力扣 107. 二叉树的层序遍历 II
    107.二叉树的层序遍历II给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:r......
  • 力扣-92-反转链表Ⅱ
    其实对链表的考察就是考察指针,不喜欢Java写算法题的一大原因就是Java没有指针区间反转链表,相对于整体反转链表而言回忆一下链表的整体反转,大概是两种做法递归,从后往前......
  • 整理一些关于树的力扣热门算法操作
    一、LC94、144、145中序,前序,后续遍历List<Integer>front=newArrayList<>();List<Integer>mid=newArrayList<>();List<Integer>back=newArrayList<>();......
  • 哈希表——哈希表理论
    哈希表讲解参考连接:原文链接:https://blog.csdn.net/weixin_40535588/article/details/121480672此处源于代码随想录哈希表的关键码就是数组的索引下标,然后通过下标直接......