针对leetcode上两数之和问题的两种代码:
第一种:
func twoSum(nums []int, target int) []int {
m := make(map[int]int)
l := make([]int, 2, 2)
for firstIndex, firstValue := range nums{
difference := target - firstValue
if lastIndex, ok := m[difference]; ok{
l[0] = firstIndex
l[1] = lastIndex
return l
}
m[firstValue] = firstIndex
}
return nil
}
第二种:
func twoSum(nums []int, target int) []int {
m := map[int]int{}
for firstIndex, firstValue := range nums{
difference := target - firstValue
if lastIndex, ok := m[difference]; ok{
return []int{firstIndex, lastIndex}
}
m[firstValue] = firstIndex
}
return nil
}
提交发现第二种比第一种时间长了3倍左右,第二种方法的切片cap和len应该也是2,为什么会造成耗时增大?