给你一个整数数组 nums 和一个整数 k 。
每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。
返回你可以对数组执行的最大操作数。
示例 1:
输入:nums = [1,2,3,4], k = 5
输出:2
解释:开始时 nums = [1,2,3,4]:
输入:nums = [3,1,3,4,3], k = 6
输出:1
解释:开始时 nums = [3,1,3,4,3]:
提示:
1 <= nums.length <= 105
1 <= nums[i] <= 109
1 <= k <= 109
其实就是看有几对和为K 那这样的话 用Map吧 记录每个数的个数 然后计算
has 确实算是个方法 不用排序了
fun maxOperations(nums: IntArray, k: Int): Int {
var map = mutableMapOf<Int, Int>()
var result = 0
nums.forEach {
map[it] = map.getOrDefault(it, 0) + 1
}
nums.forEach {
if (it == k - it && map[it]!! < 2) {
return@forEach
}
if (map.contains(k - it) && map[k - it]!! >= 1
&& map[it]!! >= 1
) {
result++
map[it] = map[it]!! - 1
map[k - it] = map[k - it]!! - 1
}
}
return result
}
短视频兴起了,我却错过了我那个最无畏,最不要脸的年代。
别搞那么没用的,包括但不限于:无用的言论、无用的抱怨、无用的脾气、无用的垂头丧气 问问自己 这个事情 你反感有用吗?这是工作,你怎么样都要做!