前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Leetcode-Solutions 1.two-sum (Python&Golang)

Leetcode-Solutions 1.two-sum (Python&Golang)

原创
作者头像
小歪
发布于 2018-05-16 08:06:14
发布于 2018-05-16 08:06:14
7943
举报

zhangslob/Leetcode-Solutions

1. Two Sum

题目

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

代码语言:txt
AI代码解释
复制
给定 nums = [2, 7, 11, 15], target = 9



因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

解题思路

1 Go

a + b = target

也可以看成是

a = target - b

在map整数整数的序号中,可以查询到a的序号。这样就不用嵌套两个for循环了。

代码语言:txt
AI代码解释
复制
func twoSum(nums []int, target int) []int {

    m := make(map[int]int, len(nums))



    for i, b := range nums {

        if j, ok := m[target-b]; ok {

            return []int{j, i}

        }



        m[nums[i]] = i

    }



    return nil

}

2 Python

  1. 由于要找到符合题意的数组元素的下标,所以先要将原来的数组深拷贝一份,然后排序。
  2. 然后在排序后的数组中找两个数使它们相加为target。这个思路比较明显:使用两个指针,一个指向头,一个指向尾,两个指针向中间移动并检查两个指针指向的数的和是否为target。如果找到了这两个数,再将这两个数在原数组中的位置找出来就可以了。
  3. 要注意的一点是:在原来数组中找下标时,需要一个从头找,一个从尾找,要不无法通过。如这个例子:numbers=0,1,2,0; target=0。如果都从头开始找,就会有问题。
代码语言:txt
AI代码解释
复制
class Solution:

    def twoSum(self, nums, target):

        if len(nums) <= 1:

            return False

        d = dict()

        for i in range(len(nums)):

            if nums[i] in d:

                return [d[nums[i]], i]

            else:

                d[target - nums[i]] = i

恩,最后找队友一起刷题。喜欢可以联系我 ,来公众号“Python爬虫与算法进阶”找我哦

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
3 条评论
热度
最新
有没有c++版本货ruby版本的?
有没有c++版本货ruby版本的?
回复回复点赞举报
我们刚刚开这课。。不过我不是这方向的所以没上。
我们刚刚开这课。。不过我不是这方向的所以没上。
回复回复点赞举报
用快排+分治和用hashmap哪一个快一点,博主有研究过这个问题没有?
用快排+分治和用hashmap哪一个快一点,博主有研究过这个问题没有?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
[LeetCode题解]开篇!求和问题总结:2Sum/3Sum/4Sum/KSum
之前在美国做访学,日子比较清闲。当时对数据结构和算法几乎一窍不通,便开始在Leetcode上刷算法题,也算是为找工作做准备,经过了一年多,也积累了很多Leetcode题解文章,并在CSDN上开了题解专栏。
Rude3Knife的公众号
2019/08/06
1.7K0
数据结构与算法 -4、5 :两数相加&&两数之和
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
石璞东
2020/05/22
7330
数据结构与算法 -4、5 :两数相加&&两数之和
查找表的经典题
大家好,我是来自「华为」的「程序员小熊」。清明假期到了,小熊给大家带来一道简单题,让大家放松放松。这道题也是各大厂的面试题,例如苹果、脸书、亚马逊和微软等等。
程序员小熊
2021/06/12
6020
查找表的经典题
[Leetcode][Python/Java]两数之和 Two Sum/两数之和 II - 输入有序数组 Two Sum II
https://leetcode-cn.com/problems/two-sum/solution/
蛮三刀酱
2019/03/26
8710
leetcode (1、2、3)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
润森
2019/11/11
4980
leetcode (1、2、3)
有人 LeetCode 第一题都做不出来
对于很多小伙伴来说,见过的第一道算法题可能是 LeetCode 上的 1 号问题:两数之和。
五分钟学算法
2022/04/08
6420
有人 LeetCode 第一题都做不出来
leetcode - two-sum
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
小小工匠
2021/08/17
1810
Leetcode模块训练3
1. 统计(优美子数组)(1048) 给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字, 我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数目。 示例 1: 输入:nums = [1,1,2,1,1], k = 3 输出:2 解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。 示例 2: 输入:nums = [2,4,6], k = 1 输出:0 解释:数列中不包含任何奇数,所以不存在优美子数组。 示例
素履coder
2023/03/23
4420
LeetCode 1. 两数之和(哈希)
题目链接:https://leetcode-cn.com/problems/two-sum/
Michael阿明
2021/02/20
1750
LeetCode 1. 两数之和(哈希)
LeetCode通关:数组十七连,真是不简单
数组基本上是我们最熟悉的数据结构了,刚会写“Hello World”不久,接着就是“杨辉三角”之类的练习。
三分恶
2021/08/10
3900
JS算法探险之数组
大家好,我是柒八九。这篇文章是我们算法探险系列的第三篇文章。是针对数据结构方面的第二篇。上一篇JS算法探险之整数中我们介绍了关于JS整数的一些基础知识和相关算法题。我们做一个简单的「前情回顾」。
前端柒八九
2022/08/25
8570
JS算法探险之数组
算法:数组
•https://tianchi.aliyun.com/course/932/14631
用户3578099
2022/03/15
2800
算法:数组
【一天一道Leetcode】两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。
潘永斌
2021/03/09
4140
每日一道leetcode:1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
felixzhao
2023/03/13
2240
每日一道leetcode:1. 两数之和
Leetcode 1:两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
py3study
2020/01/02
2370
LeetCode(1) two sum -- scala 题解与思路
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
流川疯
2021/12/28
3090
LeetCode(1) two sum -- scala 题解与思路
python(leetcode)-1.两
分析原因:代码两层for循环,时间复杂度为O(n^2),所以遇到数据量大的情况耗时较久。
py3study
2020/01/17
5080
数组-在给定数组中,快速寻找两数之和等于目标值
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
阿伟
2019/07/10
2.1K0
Leetcode#1.Two Sum(两数之和)
题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路 思路一: 暴力 思路二: 用 HashMap 存储数组元素和索引的映射,在访问到 nums[i] 时,判断 HashMap 中是否存在 target - nums[i] ,如果存在说明 target
武培轩
2018/04/18
6650
「LeetCode」0001-两数之和
代码仓库:https://github.com/ShixiangWang/LeetCode[3]
王诗翔呀
2021/07/16
2590
相关推荐
[LeetCode题解]开篇!求和问题总结:2Sum/3Sum/4Sum/KSum
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文