前言:本小哥最近在学习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)
}
}
}
网友评论