leetcode第一题—两数之和

1.题目

原题

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

例子

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

2.解析

这道题三个思路:
思路1:暴力求解,O(n2),一般面试官不会让你用这种方法做。
思路2:双指针,解决几数之和的最有效思路,三四数之和,都可以用双指针来做,其实说白了数组的题都可以用双指针,目的就是化两次遍历为一次,化三次遍历为两次,以此类推吧。
这个题有点特殊,不是一个排序数组,首先给排一下序。
思路3:哈希表,就构建字典就能解。

3.python代码

##双指针法
class Solution:
    def twoSum(self, nums, target):
        import numpy as np
        numsindex = np.argsort(nums)
        nums.sort()
        start, end = 0, len(nums)-1
        while start < end:
            tmpsum = nums[start] + nums[end]
            if tmpsum == target:
                return [int(numsindex[start]), int(numsindex[end])]
            elif tmpsum > target:
                end -= 1
            elif tmpsum < target:
                start += 1
        return []
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近为了准备春招又开始做LeetCode了,先上一年前做题时的提交记录: 可见当时应该是第一次刷题,一开始应该是用...
    JunfengsBlog阅读 1,807评论 0 0
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 7,100评论 0 1
  • 简介: 为了你我可以放弃我的全部,只是,你却不给我放弃的机会,我踏过千山万水只为换你回眸一笑,然而,最终你还...
    穿越深海来爱你阅读 3,474评论 0 1
  • *假如你爱我 我希望你是因为我有趣的灵魂 或是我那能够吸引人的清澈声音 亦是我那时而可爱的时而洒脱的个性 又或是我...
    waitingforyou阅读 1,833评论 0 0
  • 虽说不是什么光彩的事,但我确实也爱慕虚荣。至于到什么程度,在下也无从得知。 就说跑步这件事。大家都知道它带来的好处...
    明半灭阅读 2,985评论 3 8