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.8k
1 个回答
  1. 代码没问题。
  2. 测评会有很多个Case,每次会选择不同的测试集做测评,所以时间消耗不一样。
  3. 相同代码提交多次,时间消耗、内存消耗也不一样。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题