1. 程式人生 > >leetcode: 1.兩數之和

leetcode: 1.兩數之和

1、問題

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

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

示例:

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

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

2、兩種程式碼(這裡的O(n)時間複雜度解法,採用了空間換時間的方式)

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        
        """
        :Solution1
        :One type of solution by which we can get higher speed but more memory consuming.
        
        """
        dataset={}
        index=0
        for firstNumber in nums:
            dataset[firstNumber]=index
            index+=1
        firstIndex=0
        result=[]
        for firstNumber in nums:
            if dataset.has_key(target-firstNumber) and firstIndex!=dataset[target-firstNumber]:
                result.append(firstIndex)
                result.append(dataset[target-firstNumber])
                return result   
            firstIndex+=1
        return result
        
        """
        solution2

        firstIndex=0
        secondIndex=0
        result=[]
        for firstNumber in nums:
            secondIndex=0
            for secondNumber in nums:
                if firstIndex!=secondIndex:
                    sum_number=firstNumber+secondNumber
                    if sum_number==target:
                        result.append(firstIndex)
                        result.append(secondIndex)
                        return result
                secondIndex+=1
            firstIndex+=1
        return result
        """