LeetCode算法题1--两数之和

2020-02-26  本文已影响0人  懇_

先贴上答案

Kotlin:
    fun twoSum(nums: IntArray, target: Int): IntArray {
        val map = hashMapOf<Int, Int>()
        for (i in nums.indices) {
            var complement = target - nums[i]
            if (map.containsKey(complement)) {
                return intArrayOf(map[complement]!!.toInt(), i)
            }
            map[nums[i]] = i
        }
        return intArrayOf()
    }

个人错误思路:

看到题目 nums = [2, 7, 11, 15], target = 9
想通过用 if (a in b)的方法去做 ==》 if( (value - nums[ i ]) in nums )
后面发现 如果 出现 nums = [3,3], target = 6 这种情况 我就没法处理了

正确思路

  1. 创建一个hashmap存储值
  2. 循环下标
  3. 得出每一个值所需要的另一半 ( 7 = 9 -2 )
  4. 通过containsKey方法在Map中找出是否有自己所需要的值,如果不存在就把自己和自己在IntArray中对应的值存入Map
    例如 :
          var complement = target - nums[i]   // i = 1  complement  = 2  map = { Key = 4, Value = 0 }
            if (map.containsKey(complement)) {  
                return intArrayOf(map[complement]!!.toInt(), i) // intArrayOf( 0 , 1 )
            }

小笔记

上一篇下一篇

猜你喜欢

热点阅读