给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 

代码实现:

方法一

func twoSum(nums []int, target int) []int {

var result []int

for k,v := range nums[:] {

      t :=  target - v

for sk,sv := range nums[k+1:] {

if t == sv {

            result = append(result, k, k+sk+1)

break

}

      }

   }

return result

}

时间复杂度:O(N2)

空间复杂度:O(1)

 

方法二

func twoSumMethod2(nums []int, target int) []int {

var m = make(map[interface{}]interface{})

var result []int

for k,v := range nums[:] {

   t := target - v

if _, ok := m[t]; ok {

      result = append(result, m[t].(int), k)

   }

   m[v] = k

}

return result

}

空间换时间

时间复杂度:O(n)

空间复杂度:O(n)

 

posted on 2019-05-28 17:47  yiyezhou2012  阅读(197)  评论(0编辑  收藏  举报