美文网首页
LeetCode算法题1--两数之和

LeetCode算法题1--两数之和

作者: 懇_ | 来源:发表于2020-02-26 20:07 被阅读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 )
                }
    

    小笔记

    • indices —— 返回整个数组的范围
    • containsKey —— 搜索数值中的Key 返回Boolean类型

    相关文章

      网友评论

          本文标题:LeetCode算法题1--两数之和

          本文链接:https://www.haomeiwen.com/subject/mdaichtx.html