算法与编码技巧 加入小组

7个成员 12个话题 创建时间:2018-07-03

Two Sum(两数之和)

发表于2018-07-08 833次查看

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

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

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

 

题目链接:

1. 英文:https://leetcode.com/problems/two-sum/description/

2. 中文:https://leetcode-cn.com/problems/two-sum/description/

3回复
  • 2楼 wusheng 08-02

    双指针的python实现方法:

    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            idx=map(lambda x:x[0], sorted(list(enumerate(nums)),key=lambda x:x[1]))
            left=0
            right=len(nums)-1
            while(left<right):
                if nums[idx[left]]+nums[idx[right]]==target:
                    return idx[left],idx[right]
                elif nums[idx[left]]+nums[idx[right]]>target:
                    right -=1
                elif nums[idx[left]]+nums[idx[right]]<target:
                    left +=1
            return
    

    关于排序这一步是不是写的有点啰嗦,不知道有没有更好的方式?

  • 3楼 chenholy 04-03

    idx = sorted(range(len(data)), key = lambda x : data[x]) #data为原数组

发表回复
你还没有登录,请先 登录或 注册!
话题作者
解惑者学院首席讲师

新加组员