码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode#561. Array Partition I(数组拆分 I)

时间:2018-08-27 21:25:44      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:描述   提示   print   pairs   拆分   长度   代码   length   pac   

题目描述

给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。

示例 1:

输入: [1,4,3,2]

输出: 4
解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).

提示:

  1. n 是正整数,范围在 [1, 10000].
  2. 数组中的元素范围在 [-10000, 10000].

思路

分组之后min(ai, bi)的和最大,同组两个数相差越小越好,所以需要先对数组进行排序后,再取偶数位的和即可。

代码实现

package Array;

import java.util.Arrays;

/**
 * 561. Array Partition I(数组拆分 I)
 * 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
 */
public class Solution561 {
    public static void main(String[] args) {
        Solution561 solution561 = new Solution561();
        int[] nums = {1, 4, 3, 2};
        System.out.println(solution561.arrayPairSum(nums));
    }

    public int arrayPairSum(int[] nums) {
        int sum = 0;
        Arrays.sort(nums);
        for (int i = 0; i < nums.length; i += 2) {
            sum += nums[i];
        }
        return sum;
    }
}

Leetcode#561. Array Partition I(数组拆分 I)

标签:描述   提示   print   pairs   拆分   长度   代码   length   pac   

原文地址:https://www.cnblogs.com/wupeixuan/p/9543688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!