
[题目描述] 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
1 <= A.length <= 10000 -10000 <= A[i] <= 10000 A 已按非递减顺序排序。
在线评测地址: https://www.lintcode.com/problem/squares-of-a-sorted-array/?utm_source=sc-v2ex-fks0603
样例 示例 1
输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2
输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121] [题解] 先循环遍历数组 A,得到该数组每个位置数所对应的平方数,然后排序即可
public class Solution { /** * @param A: The array A. * @return: The array of the squares. */ public int[] SquareArray(int[] A) { for(int i = 0; i < A.length ; i++){ A[i] = A[i] * A[i]; } Arrays.sort(A); return A; } } 更多语言代码参见 https://www.jiuzhang.com/solution/squares-of-a-sorted-array/?utm_source=sc-v2ex-fks0603
1 wellsc 2020 年 6 月 3 日 via iPhone 这…… |
2 iamben 2020 年 6 月 3 日 via iPhone 这…直接用 sort()的话题目的意义是啥 |
3 mxalbert1996 2020 年 6 月 3 日 via Android 你管这叫算法。。。 |
4 liuminghao233 2020 年 6 月 3 日 via iPhone easy 难度不要要求太多... |
5 softtwilight 2020 年 6 月 3 日 用首位两个指针,将平方更大的数放到数组尾部 |
6 xingheng 2020 年 6 月 3 日 直接双端指针往中间遍历并且比较平方值就行了,不需要 sort,时间复杂度 O1,空间复杂度 On 。 |
7 rrfeng 2020 年 6 月 3 日 via Android 我先取中间看正负,然后挑正负数多的那一边开始算,算到符号变化之后开始插入排序 或者正负都算出来然后归并 还有啥降低复杂度的办法呢 |
8 rrfeng 2020 年 6 月 3 日 via Android 哦对双指针最优…… |
9 luckyrayyy 2020 年 6 月 3 日 @xingheng 双指针时间不是 On 么? |
10 xingheng 2020 年 6 月 7 日 @luckyrayyy 你说得对,是我想差了。逃... |