前言
有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。
题目内容
分析
解法一:暴力嵌套循环
很显然,对于这道题最直观的想法是,利用两层for循环,遍历所有的两个数字对,相加并判断是否等于target.
下面给出这种解法的golang和python代码
func twoSum(nums []int, target int) []int {
for i := 0; i < len(nums); i++ {
for j := i + 1; j < len(nums); j++ {
if nums[i]+nums[j] == target {
return []int{i, j}
}
}
}
return nil
}
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i):
if nums[i] + nums[j] == target:
return [i, j]
return []
解法二:哈希表
由于哈希表的查找时间复杂度仅为𝑂(1), 因此我们只需要遍历一次nums数组即可得到答案,时间复杂度为𝑂(𝑛)。代码如下:
func twoSum(nums []int, target int) []int {
table := make(map[int]int)
for i := 0; i < len(nums); i++ {
if index, ok := table[target-nums[i]]; ok {
return []int{index, i}
} else {
table[nums[i]] = i
}
}
return nil
}
def twoSum(self, nums: List[int], target: int) -> List[int]:
table = {}
for i in range(len(nums)):
if target - nums[i] in table:
return [i, table[target - nums[i]]]
else:
table[nums[i]] = i
return []
感谢观看!!