561.array-partition-i.go 455 B

123456789101112131415161718192021222324252627
  1. func arrayPairSum(nums []int) int {
  2. set := [20001]int{}
  3. for _, i := range nums {
  4. set[i+10000]++
  5. }
  6. sum, flag := 0, 1
  7. for i, val := range set {
  8. if val != 0 {
  9. if val&1 == 0 {
  10. sum += val / 2 * (i - 10000)
  11. } else {
  12. sum += (val + flag) / 2 * (i - 10000)
  13. flag ^= 1
  14. }
  15. }
  16. }
  17. return sum
  18. }
  19. func arrayPairSumSort(nums []int) int {
  20. sort.Ints(nums)
  21. sum := 0
  22. for i := len(nums) - 2; 0 <= i; i -= 2 {
  23. sum += nums[i]
  24. }
  25. return sum
  26. }