Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
翻译
给定一个整形数组和一个整数target,返回2个元素的下标,它们满足相加的和为target。
你可以假设每种输入只会对应一个答案,但是,数组中同一个元素不能使用两遍。
Kotlin实现1
fun twoSum(nums: IntArray, target: Int): IntArray? {
for (i in nums.indices) {
for (j in i + 1 until nums.size) {
if (nums[j] + nums[i] == target) {
return intArrayOf(i, j)
}
}
}
return intArrayOf(0, 0)
}
Kotlin实现2
fun twoSum(nums: IntArray, target: Int): IntArray? {
val map: MutableMap<Int, Int> = HashMap()
for (i in nums.indices) {
val key = target - nums[i]
if (map.containsKey(key)) {
return intArrayOf(map[key]!!, i)
}
map[nums[i]] = i
}
return intArrayOf(0, 0)
}
参考:
https://leetcode.com/problems/two-sum/