【go】leetcode算法发现的golang切片两种赋值方式耗时问题

针对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,为什么会造成耗时增大?

  1. 代码没问题。
  2. 测评会有很多个Case,每次会选择不同的测试集做测评,所以时间消耗不一样。
  3. 相同代码提交多次,时间消耗、内存消耗也不一样。

回答

以上是 【go】leetcode算法发现的golang切片两种赋值方式耗时问题 的全部内容, 来源链接: www.h5w3.com/113054.html

回到顶部