1. 兩數(shù)之和(Python)

更多精彩內容,請關注【力扣簡單題】。

題目

難度:★☆☆☆☆
類型:數(shù)組

給定一個整數(shù)數(shù)組 nums 和一個目標值 target,請你在該數(shù)組中找出和為目標值的那兩個整數(shù),并返回它們的數(shù)組下標。你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數(shù)組中同樣的元素作為加數(shù)。

示例

給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解答

第一種方法:暴力求解
這是大多數(shù)同學都可以想到的方法,思路非常簡單,尋找所有可能的兩數(shù)組合,然后分別判斷能否使這兩個數(shù)的和為指定值target。時間復雜度為O(N^2)

class Solution(object):
    def twoSum(self, nums, target):
        :param nums:  number array
        :param target: target sum
        :return: indexes of the two numbers
        for i in range(len(nums)-1):
            for j in range(i+1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return []

居然意外地通過了時間限制,不過有另一種方式:

class Solution(object):                    
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            temp = nums[:]            # 取出當前的數(shù)字
            temp[i] = '#'                  # 將當前數(shù)字的位置置#
            dif = target - nums[i]    # 計算差值
            if dif in temp:                # 查看差值是否在剩余數(shù)字中
                return [i, temp.index(dif)]
        return []

拓展

如果可以利用數(shù)組中的重復元素作為加數(shù)呢?
如果是尋找三個數(shù)呢?

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容