刷题专栏(三十):数组拆分 I

简介: 刷题专栏(三十):数组拆分 I


前言

刷题专栏到目前已经是第三十篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题,《数组拆分 I》,是关于数组结构的一道题,对于数组来说,无非就是排序、遍历等操作。

今天的这道题就是这样的,要用到排序了,下面就一起来看一下吧。image.png

算法题:数组拆分 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造成的,应该自己写一个快速排序会更快一些。

image.png

总结

本道题主要考察对数组数据结构的使用是否熟练,对数组中元素的排序是否熟练,换言之,这道题你要是搞懂排序就基本能解出来了。

目录
相关文章
|
6月前
|
消息中间件 存储 算法
这些年背过的面试题——实战算法篇
本文是技术人面试系列实战算法篇,面试中关于实战算法都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
9月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
141 2
|
9月前
|
算法 计算机视觉
【数据结构入门精讲 | 第十六篇】并查集知识点及考研408、企业面试练习
【数据结构入门精讲 | 第十六篇】并查集知识点及考研408、企业面试练习
102 0
|
9月前
|
存储 缓存 索引
【数据结构入门精讲 | 第十四篇】散列表知识点及考研408、企业面试练习(1)
【数据结构入门精讲 | 第十四篇】散列表知识点及考研408、企业面试练习(1)
128 0
|
9月前
|
自然语言处理 数据安全/隐私保护
【数据结构入门精讲 | 第十五篇】散列表知识点及考研408、企业面试练习(2)
【数据结构入门精讲 | 第十五篇】散列表知识点及考研408、企业面试练习(2)
63 0
|
9月前
|
算法
刷题专栏(二十四):两个数组的交集
刷题专栏(二十四):两个数组的交集
115 0
|
9月前
|
算法
刷题专栏(二十):单词规律
刷题专栏(二十):单词规律
68 0
|
算法 Java 测试技术
面试题精选:求根号2简单?高级算法你肯定不会(1)
开始大家都以为这个算法是游戏的开发者Carmack发现的,但后来调查发现,该算法在这之前就在计算机图形学的硬件与软件领域中有所应用,如SGI和3dfx就曾在产品中应用此算法,所以至今都无人知晓这个算法是谁发明的。
65 1
|
算法 Java C语言
面试题精选:求根号2简单?高级算法你肯定不会(2)
这篇博客从立题到完成经历了好几天的时间,期间整理思路、编码、绘图、查阅资料、修改完善总累计耗时近8h。写作不易,如果文章对你有用欢迎素质三连(点赞、收藏加关注) 。
72 1
|
9月前
|
算法 Java 程序员
太全了!字节总监总结240道算法LeetCode刷题笔记
常言道「算法才是编程的灵魂」,不管是Java, python,还是PHP,都跨不过算法这个门槛。