有序数组的平方

120 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

有序数组的平方

题目

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例 1:

**输入:**nums = [-4,-1,0,3,10] 输出: [0,1,9,16,100] **解释:**平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]

示例 2:

**输入:**nums = [-7,-3,2,3,11] 输出: [4,9,9,49,121]

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非递减顺序 排序

进阶:

  • 请你设计时间复杂度为 O(n) 的算法解决本问题

题目分析

这道题一看解释就知道题目要什么操作了,就是先对数组中的每个元素进行平方,得到的新的数组再进行从小到大的排序,然后输出

代码实现

这是代码的实现:

class Solution {
    public int[] sortedSquares(int[] nums) {
        int[] ans = new int[nums.length];
        for (int i=0;i< nums.length;++i) {
            ans[i] = nums[i] * nums[i];
        }
        Arrays.sort(ans);
        return ans;
    }
}

这是我用java实现的功能,每个题都用不同的解法和写法,我大体整理了一下自己的思路然后就写了,也没有再想其他的方法,如果你有更好的解法,欢迎和我留言,我们一起进步,一起学习数据结构,共同进步,通过这道题能更熟悉数组的元素进行排序的使用和操作。

这里使用了Arrays.sort(ans)直接进行排序了,排序的算法有很多,比如直接插入排序,折半插入排序,选择排序,冒泡排序,归并排序,还有我们在前几篇文章中经常使用的快速排序。

总结

我在这里介绍了数组的排序的几种算法,直接插入排序,折半插入排序,选择排序,冒泡排序,归并排序,和快速排序,排序算法是面试中经常会问到的,尤其是快速排序,更是面试官喜欢问的,也是重点内容,要牢记于心,掌握思想。

这道题先分析到这里,如果有不当之处,欢迎指正。