前言
刷题专栏到目前已经是第三十篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天的这道题,《数组拆分 I》,是关于数组结构的一道题,对于数组来说,无非就是排序、遍历等操作。
今天的这道题就是这样的,要用到排序了,下面就一起来看一下吧。
算法题:数组拆分 I
根据题目的描述来看,是给到了一个整数数组nums,要在这个nums数组中,拆分出这个数组长度一半的数字组合来。
并且要保证每一对数字组合加起来的和都相等。
这道题不由得让我想起了从1加到10的问题,总不能一个一个的去加吧。
就只能通过首尾相加,再乘上长度的一半就能得到最后的结果了。
本题也是一样,思路转变一下,只要是排序是顺序排序,就可以使用这个概念了。
那么如何给数组排序呢。
其实有很多方法,比如冒泡排序、快速排序、插入排序等等等。
但是我都没用,有点发懒,直接使用了Arrays.sort方法来排序了,大家出去面试最好不要使用这个方法,性能太差。
代码展示
本次执行代码如下所示,大家可以自行参考一下。
public class Solution { public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.arrayPairSum(new int[]{5, 8, 9, 12, 5, -6})); } public int arrayPairSum(int[] nums) { Arrays.sort(nums); int result = 0; for (int i = 0; i < nums.length; i += 2) { result += nums[i]; } return result; } }
代码执行结果
本次执行的差强人意,可以说是很差了,应该是使用了Arrays.sort造成的,应该自己写一个快速排序会更快一些。
总结
本道题主要考察对数组数据结构的使用是否熟练,对数组中元素的排序是否熟练,换言之,这道题你要是搞懂排序就基本能解出来了。