给你一个整数数组
nums
和一个整数k
。每一步操作中,你需要从数组中选出和为
k
的两个整数,并将它们移出数组。返回你可以对数组执行的最大操作数。
1 <= nums.length <= 105
1 <= nums[i] <= 109
1 <= k <= 109
记录一下优化点,其实很简单,只需要认真读条件,也算是一个考点(是否认真读题)
func maxOperations(nums []int, k int) int {
cache := make(map[int]int,500)
var count int = 0
for _, num := range nums {
if num >= k{
continue
}
if cache[k-num] == 0 {
cache[num] += 1
} else {
cache[k-num] -= 1
count++
}
}
return count
}
因为nums不存在小于等于0的数,所以如果num>=k 就退出循环,减少循环次数