| https://leetcode.com/problems/array-partition | Easy |
|---|
class Solution {
fun arrayPairSum(nums: IntArray): Int {
val off = 10000
val cnt = IntArray(20001)
var i = 0
while (i < nums.size) { cnt[nums[i] + off]++; i++ }
var take = true
var ans = 0
var v = 0
while (v <= 20000) {
val c = cnt[v]
if (c != 0) {
val valv = v - off
ans += if (take) valv * ((c + 1) ushr 1) else valv * (c ushr 1)
if ((c and 1) == 1) take = !take
}
v++
}
return ans
}
}