给您一个整数数组和一个整数k。
在一个操作中,您可以从数组等于k并从数组中删除的数组中选择两个数字。
返回您可以在数组上执行的最大操作数。
示例1:
示例2:
笔记:
根据意图,给出一个整数数组和一个整数k.在一个操作中,您可以选择两个等于k的k数的总和,然后从数组中删除它们。返回到可以在该数字中执行的最大操作数量大批。
这个问题实际上是字典的实际应用。我们知道,两个数字实际上可以相同,也可以不同。对于相同的数字,我们可以执行的次数不过是相同的数字。这是计数[n] // 2;对于不同的数字,我们执行的次数是在两个数字中出现的挖掘(count [n],count [k-n]),前提是两个二人组出现在数字中,我的想法已经完成。
当我们编写代码时,我们只需要先计数数字中的元素,获取计数器C,然后遍历C中的键值对。如果k-key和键相等,请添加值// 2到结果,andif不相等,将出现最小的次数(值,c [k -key])以添加到结果中。要注意的一件事是避免重复计数,因为在第二种情况下,Key和K -Key都在此情况下。算,我们只需要添加判断条件键*2 <k即可确保只有一个计数执行,最后可以返回结果。
时间复杂性为O(n),空间复杂性为O(n)。
https://leetcode.com/prblems/max-number-k-k-sum-pairs/
您的支持是我最大的动力
原始:https://juejin.cn/post/7097024763943452709