LeetCode 001, Two Sum

来源:互联网 发布:阳炎ene软件ios 编辑:程序博客网 时间:2024/05/16 08:13

题目链接: https://leetcode.com/problems/two-sum/

方法1:对数组进行排序然后利用两个游标从两头到中间读取数字并进行判断。

代码:

class Solution(object):    def twoSum(self, nums, target):        snums = sorted(nums)        begin, end = 0, len(nums) - 1        while(begin < end):            if(snums[begin] + snums[end] == target):                if(snums[begin] == snums[end]):                    index1 = nums.index(snums[begin])                    index2 = nums.index(snums[begin], index1 + 1)                else:                    index1 = nums.index(snums[begin])                    index2 = nums.index(snums[end])                    if(index1 > index2):                        return (index2 + 1, index1 + 1)                return (index1 + 1, index2 + 1)            elif(snums[begin] + snums[end] > target):                end = end - 1            else:                begin = begin + 1

运行时间:56ms, 40.76%

方法2:利用Hash表

代码:

class Solution(object):    def twoSum(self, nums, target):        if(len(nums) <= 1):            return False        d = dict()        for i,v in enumerate(nums):            if(v in d):                return [d[v], i + 1]            else:                d[target - v] = i + 1

运行时间:40ms, 95.26%

0 0