我爱编程

Kotlin 算法1 two sum

2018-06-18  本文已影响0人  holmes000

前言:本小哥最近在学习Kotlin语言,为了更快更好的使用掌握此语言,尝试用它写些算法。基本Kotlin语法参考http://www.runoob.com/kotlin/kotlin-basic-syntax.html

题目:给出一个数组,再给定一个目标数,求出当数组中的两个数之和等于目标数时,这个两个数的索引?
例:一个数组为int[] a= [1,2,3,4,5] ,目标值为 target=8
当a[2]+a[4]=8,即索引为2,4

思路:第一次循环取出一个数,第二次循环取出其它数与之相加,判断它们的和是否等于目标数。等于即返回两个索引值。

fun twoSum(nums: IntArray, target: Int): IntArray {
    for (i in 0..nums.size - 2) {
        for (j in i + 1..nums.size - 1) {
            if (nums[j] == target - nums[i]) {
                return kotlin.intArrayOf(i, j)
            }
        }
    }
}

方法二:

fun twoSum(nums: IntArray, target: Int): IntArray {
    val mapA = hashMapOf<Int, Int>()
    for (i in 0..nums.size - 1) {
        var value = target - nums[i]
        if (mapA.containsKey(value)) {
            return kotlin.intArrayOf(mapA.get(value)!!, i)
        } else {
            mapA.put(nums[i], i)
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读