leetcode-数组拆分 I(java版)

文章目录

    • 题目
    • 思路
    • 代码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].

思路

一开始想着选择排序后相加,然后在79用例的时候超时了,所以换了一个

 Arrays.sort(nums);

代码1(超时了)

/*
 * @lc app=leetcode.cn id=561 lang=java
 *
 * [561] 数组拆分 I
 */

// @lc code=start
class Solution {
    public int arrayPairSum(int[] nums) {
      
        for(int i = 0;inums[j]){
                    int t=nums[i];
                    nums[i] = nums[j];
                    nums[j] = t;
                }
            }
        }

        int sum = 0;
        for(int i = 0;i

代码

/*
 * @lc app=leetcode.cn id=561 lang=java
 *
 * [561] 数组拆分 I
 */

// @lc code=start
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;

    }
}
// @lc code=end


你可能感兴趣的:(leetcode刷题)