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] <= 104nums已按 非递减顺序 排序
进阶:
- 请你设计时间复杂度为
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)直接进行排序了,排序的算法有很多,比如直接插入排序,折半插入排序,选择排序,冒泡排序,归并排序,还有我们在前几篇文章中经常使用的快速排序。
总结
我在这里介绍了数组的排序的几种算法,直接插入排序,折半插入排序,选择排序,冒泡排序,归并排序,和快速排序,排序算法是面试中经常会问到的,尤其是快速排序,更是面试官喜欢问的,也是重点内容,要牢记于心,掌握思想。
这道题先分析到这里,如果有不当之处,欢迎指正。