leetcode 1. Two Sum(兩數之和)
阿新 • • 發佈:2018-11-26
解題方案
思路 1 ******- 時間複雜度: O(N^2)******- 空間複雜度: O(1)******
暴力解法,兩輪遍歷
beats 27.6%
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i in range(len(nums)): for j in range(i+1, len(nums)): if nums[i] + nums[j] == target: return [i, j]
思路 2 ******- 時間複雜度: O(N)******- 空間複雜度: O(N)******
上面的思路1太慢了,我們可以犧牲空間換取時間
2 7 11 15
不存在 存在之中
lookup {2:0} [0,1]
- 建立字典 lookup 存放第一個數字,並存放該數字的 index
- 判斷 lookup 種是否存在:
target - 當前數字
, 則表面 當前值和 lookup中的值加和為 target. - 如果存在,則返回:
target - 當前數字
beats 100%
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ lookup = {} for i, num in enumerate(nums): if target - num in lookup: return [lookup[target-num], i] else: lookup[num] = i
來源:https://github.com/apachecn/awesome-algorithm/tree/master/docs/Leetcode_Solutions/Python
備註:若有不懂,請新增群號812791932,有小哥哥,小姐姐的耐心解答么