美文网首页
14、数组拆分 I

14、数组拆分 I

作者: ZeroForSpider | 来源:发表于2018-11-08 00:31 被阅读6次

1、题目如下

给定长度为 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).
提示:

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

2、解题思路

该题目较为简单,题目的意思是求从1 到 n 的 min(ai, bi) 总和最大。看似不太好做,其实只需要将该数组进行排序后再进行求和即可。若从大到小排列,即nums[1]+nums[3]+nums[5]……+nums[n-1]为最大和。若从小到大排列,即nums[0]+nums[2]+nums[4]……+nums[n]为最大和。

3、代码如下

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

public class MainClass {
    public static int[] stringToIntegerArray(String input) {
        input = input.trim();
        input = input.substring(1, input.length() - 1);
        if (input.length() == 0) {
          return new int[0];
        }
    
        String[] parts = input.split(",");
        int[] output = new int[parts.length];
        for(int index = 0; index < parts.length; index++) {
            String part = parts[index].trim();
            output[index] = Integer.parseInt(part);
        }
        return output;
    }
    
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = in.readLine()) != null) {
            int[] nums = stringToIntegerArray(line);
            
            int ret = new Solution().arrayPairSum(nums);
            
            String out = String.valueOf(ret);
            
            System.out.print(out);
        }
    }
}

4、运行结果如下:

image.png

相关文章

  • 14、数组拆分 I

    1、题目如下 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b...

  • 数组拆分 I

    题目: 题目的理解: 将数组升序排列,取奇数位置的数之和。 python实现 提交 // END 英语是我的拦路虎...

  • 2021.2.16每日一题

    561. 数组拆分 I[https://leetcode-cn.com/problems/array-partit...

  • 561. 数组拆分 I

    内容 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ...

  • word-break

    就用一个一维的 dp 数组,其中 dp[i] 表示范围 [0, i) 内的子串是否可以拆分,注意这里 dp 数组的...

  • 一起学算法-561. 数组拆分 I

    一、题目 LeetCode-561. 数组拆分 I地址:https://leetcode-cn.com/probl...

  • LeetCode刷题DAY 39: 数组拆分 I

    原文地址:LeetCode刷题DAY 39: 数组拆分 I[https://mp.weixin.qq.com/s?...

  • LeetCode题解之数组拆分 I

    数组拆分 I 题目描述 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (...

  • 领扣561. 数组拆分 I

    题目描述 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2)...

  • LeetCode-561-数组拆分 I

    给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ......

网友评论

      本文标题:14、数组拆分 I

      本文链接:https://www.haomeiwen.com/subject/dtcixqtx.html