1. 程式人生 > >python實現給定一個數和陣列,求陣列中兩數之和為給定的數

python實現給定一個數和陣列,求陣列中兩數之和為給定的數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

示例:

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

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

程式碼實現:

    def twoSum(self, nums, target):
        nums_bak = nums.copy()
        nums.sort()
        i = 0
        j = 0
        for k in range(0, (len(nums) - 1)):
            if nums[k] + nums[k + 1] >= target:
                i = k
                j = k + 1
                break
        while i >= 0 and j < len(nums):
            if nums[i] + nums[j] < target:
                j += 1
            elif nums[i] + nums[j] > target:
                i -= 1
            else:
                if nums[i] == nums[j]:
                    return [nums_bak.index(nums[i]), nums_bak.index(nums[j], i + 1)]
                else:
                    return [nums_bak.index(nums[i]), nums_bak.index(nums[j])]