1. Two Sum

来源:互联网 发布:猴王水果竞猜网站源码 编辑:程序博客网 时间:2024/06/06 03:04

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
Subscribe to see which companies asked this question

给定一个整数数组和一个目标值,返回两个数的索引,这两个数之和等于目标值

第一次尝试,最低效的方法

采用遍历的方法,时间复杂度为O(n^2),代码如下:

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

结果见下图(5516 ms):
这里写图片描述

别人家孩子的做法

在此之前,我想到过使用比较好的数据结构肯定可以简化实现过程,dict或者其他,但最终没有想到解决方案,于是在讨论区逛了逛,他们好过分,真的可以用dict来很简单的解决,思路是这样的:

  1. 将输入的整数数组转换为dict,key为数组中的值,value为该值对应的索引
  2. 对于每一个key,判断target-key是否在dict中,再则返回[key对应的value, target-key对应的value],如果不在则继续下一个

时间复杂度变成O(n),我的python实现如下:

class Solution(object):    def twoSum(self, nums, target):        """        :type nums: List[int]        :type target: int        :rtype: List[int]        """        positions = dict(zip(nums, range(len(nums))))        for i in range(len(nums)):            position = positions.get(target-nums[i], None)            if position:                return [i, position]

耗时只有上次的1/100,如下图(60 ms):
这里写图片描述

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 睡觉外面噪音大怎么办 怀孕早期晚上睡不着怎么办 短发发尾翘怎么办 很累就是睡不着怎么办 人累但是睡不着怎么办 如果晚上睡不着该怎么办 晚上睡不着觉该怎么办 晚上睡不着该怎么办呢 晚上失眠睡不着该怎么办 晚上一直睡不着该怎么办 怀孕晚上睡不着该怎么办 运动太累睡不着怎么办 运动完睡不着觉怎么办 晚上冷得睡不着怎么办 晚上脚冷睡不着怎么办 短发头发有点乱怎么办 不想让别人睡觉怎么办 15岁晚上睡不着怎么办 16岁青少年失眠怎么办 好累又睡不着怎么办 造口患者拉肚子怎么办? 起床后头发乱怎么办 新生儿睡觉偏头怎么办 婴儿睡觉偏头怎么办 月经期间血下不来怎么办 月经下不来怎么办一点点咖啡色 突然早睡睡不着怎么办 移植后睡不着觉怎么办 孕期喜欢右侧睡怎么办 减肥期间有饭局怎么办 减肥期间晚上聚餐怎么办 减肥中遇到聚餐怎么办 减肥期间遭遇聚餐怎么办? 减肥期间聚会了怎么办 小猫摔到腿了怎么办 晚上睡觉颈椎痛怎么办 孕妇胎儿腿短怎么办 胎宝宝腿短怎么办 孕妇左侧卧睡不着怎么办 大人高烧40.5度怎么办 睡觉后颈椎疼怎么办