H5W3
当前位置:H5W3 > go > 正文

【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. 相同代码提交多次,时间消耗、内存消耗也不一样。

回答

本文地址:H5W3 » 【go】leetcode算法发现的golang切片两种赋值方式耗时问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址