LeetCode数组-6(561)-Array Partition I(比较抽象的题目)
Posted 菜鸟更要虚心学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode数组-6(561)-Array Partition I(比较抽象的题目)相关的知识,希望对你有一定的参考价值。
题目描述:两句话发人深思啊。。。。
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), ..., (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.
感觉题目的大致意思就是把数组分成很多个二元数组,对它们以求最小值的方式求和,使得和最大。
思路:
最开始的思路,现在还不知道对不对,就是先排序数组,使用一个指针向后遍历,求最小并求和。⚠️【注意】指针每次累加 2
【正确代码】 一次写对~
1 class Solution { 2 public int arrayPairSum(int[] nums) { 3 if (nums.length % 2 != 0 || nums == null) { 4 return -1; 5 } 6 Arrays.sort(nums); 7 int maxSum = 0; 8 for (int i = 0; i < nums.length - 1; i += 2) { 9 maxSum += Math.min(nums[i], nums[i + 1]); 10 } 11 return maxSum; 12 } 13 }
时间复杂度:O(n*logn)
空间复杂度:O(n*logn)
以上是关于LeetCode数组-6(561)-Array Partition I(比较抽象的题目)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 561 Array Partition I(数组划分)
LeetCode 561. Array Partition I (数组分隔之一)
Leetcode#561. Array Partition I(数组拆分 I)
561. Array Partition I - LeetCode