【Leetcode】Python实现两数之和

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

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

示例:

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

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

这里也可以使用enumerate(),会更方便;

class Solution(object):
    def twoSum(self, nums, target):
        # 循环遍历下标
        for i in range(len(nums)):
            # target值减去当前下标在数组中的值,就是要在数组中查找的另一个值
            num2 = target - nums[i]
            # 先判断是否在数组中
            if num2 in nums:
                # 在数组中,取下标,注意两个数相同不影响,后面会判断
                j = nums.index(num2)
                # 当取的两个下标不一样,才会return,结束循环
                if i != j:
                    # 简写的if语句
                    return [i, j] if i < j else [j, i]

测试用例:

    solu = Solution()
    print(solu.twoSum([2, 7, 11, 15], 9))
    print(solu.twoSum([3, 3, 4], 6))
    print(solu.twoSum([3, 2, 4], 6))

猜你喜欢

转载自blog.csdn.net/chenhua1125/article/details/80335679
今日推荐