文巾解题 1. 两数之和
生活随笔
收集整理的這篇文章主要介紹了
文巾解题 1. 两数之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 題目描述
2 解題思路
2.1 方法1 暴力枚舉
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:n = len(nums)for i in range(n):for j in range(i + 1, n):if nums[i] + nums[j] == target:return [i, j]return None?
2.2 方法2 用index函數
? ? ? ?這種方法一開始在([3,2,4],6)這個測試樣例出現了一些的問題。這里出問題的原因是,一開始我沒有判斷列表里面的元素的兩倍是target的情況【以這個測試樣例為例,其實是沒有輸出的,但是因為i=0的時候,index也是0,所以它會返回(0,0)】。所以需要特判一下(遇到target/2的數的時候,如果i等于index,那么繼續遍歷,直到看到第二個target/2的數,那么那個數的i和index可以組合成為要返回的東西)。
????????當我們現在的數和我們要找的數下標是一樣的,那么就繼續往后面找(因為list.index永遠找到的是第一個位置,所以當出現[3,2,3],6的時候,第一次就不會顯示,第二次才會)
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)):x=nums[i]y=target-xif(y in nums):if(i==nums.index(y)):continueelse:return [i,nums.index(y)]return None2.3 方法3 :哈希表
我們從頭遍歷一個數組,如果target-當前遍歷到的元素的值 正好在這個哈希表里面,那么返回哈希表里面存儲的下標和當前下標;否則,將當前元素值,及對應的下標存入哈希表中。
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:dit={}for i in range(len(nums)):if(target-nums[i] in dit):return([dit[target-nums[i]],i])else:dit[nums[i]]=ireturn(None)?
總結
以上是生活随笔為你收集整理的文巾解题 1. 两数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文巾解题 203. 移除链表元素
- 下一篇: pytorch笔记:Dataloader