首页 > 其他分享 >两数之和

两数之和

时间:2023-05-08 17:14:45浏览次数:43  
标签:遍历 target nums 复杂度 len 数组 两数

1.题目描述

https://leetcode.cn/problems/two-sum/

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

示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 

难度: 简单

2.解法

方法一: 暴力枚举法

思路
1.选择数组中第一个数(i=0)作为初始值,遍历剩下的数(j=1,j=2,j=3...j=len(nums)-1),若nums[i]+nums[j] == target则返回
2.选择数组中第二个数(i=1)作为初始值,遍历剩下的数(j=2,j=3...j=len(nums)-1),若nums[i]+nums[j] == target则返回
3.选择数组中第i个数作为初始值,遍历剩下的数(j=i+1,j=i+2...j=len(nums)-1),若nums[i]+nums[j] == target则返回
4.综上,代码如下

class Solution(object):
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]

时间复杂度O(N*N) 空间复杂度O(1)

方法二:哈希表

思路
在方法一中使用了双层循环遍历列表的方式因此时间复杂度较高,而哈希表查找的时间复杂度是O(1),将方法一中遍历j查找target-i的方式换成从哈希表中查找,代码如下

class Solution(object):
    def twoSumHash(self, nums, target):
        remainHash = {}
        for i in range(len(nums)):
            if target - nums[i] in remainHash:
                return [i, remainHash[target - nums[i]]]
            remainHash[nums[i]] = i

时间复杂度O(N) 空间复杂度O(N)

标签:遍历,target,nums,复杂度,len,数组,两数
From: https://www.cnblogs.com/iamluoli/p/17381959.html

相关文章

  • [Leetcode] 0001. 两数之和
    1.两数之和题目描述给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 示例1......
  • 1. 两数之和
    1.两数之和题目描述给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 示例......
  • 两数之和
    题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标。需要注意的点:1、map用来存放遍历过的数据2、auto是自动推导数据类型3、key值和value值,key值不一定非要存地址,利用map的find()函数,对比的......
  • 两数之和
    给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案输入:nums=[2,7,11,15],target......
  • 代码随想录算法训练营第六天 | 242.有效的字母异位词 、349. 两个数组的交集 、 202.
    ......
  • Leetcode 1.两数之和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.暴力遍历法解题思路:遍历数组,对于当前的元素nums[i],如果result=taget-nums[i]在数组中,则返回这nums[i]和result的下标。如果已经查......
  • #yyds干货盘点# LeetCode程序员面试金典:两数相除
    题目:给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8,-2.7335将被截断至-2。返回被除数 dividend 除以除数 divisor 得到的商。注意:假设我们的......
  • 两数相加-Add Two Numbers-中等
    两数相加AddTwoNumbers[M]题目:https://leetcode.cn/problems/add-two-numbers/description/?favorite=2cktkvj讲解https://www.youtube.com/watch?v=wgFPrzTjm7s&ab_channel=NeetCodepublicListNodeaddTwoNumbers(ListNodel1,ListNodel2){ListNoded......
  • LeetCode-Top100:两数之和(python)
     给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 示例1:输入:nums=......
  • 两数平方和(嵌套函数)
    求两整数平方和。#include<iostream>usingnamespacestd;intpower(intx,intn);intmain(){ inta,b; cout<<"请输入两个整数a,b:"<<endl; cin>>a>>b; intsum; sum=power(a,2)+power(b,2); cout<<"sum="<<sum<<end......