V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hakunamatata11
V2EX  ›  推广

[leetcode/lintcode 题解]字节跳动面试题:有序数组的平方

  •  
  •   hakunamatata11 · 2020-06-03 17:21:57 +08:00 · 1539 次点击
    这是一个创建于 1636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    [题目描述] 给定一个按非递减顺序排序的整数数组 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

    10 条回复    2020-06-07 09:09:11 +08:00
    wellsc
        1
    wellsc  
       2020-06-03 17:40:50 +08:00 via iPhone
    这……
    iamben
        2
    iamben  
       2020-06-03 18:50:28 +08:00 via iPhone
    这…直接用 sort()的话题目的意义是啥
    mxalbert1996
        3
    mxalbert1996  
       2020-06-03 22:11:13 +08:00 via Android
    你管这叫算法。。。
    liuminghao233
        4
    liuminghao233  
       2020-06-03 22:14:03 +08:00 via iPhone
    easy 难度不要要求太多...
    softtwilight
        5
    softtwilight  
       2020-06-03 22:16:29 +08:00
    用首位两个指针,将平方更大的数放到数组尾部
    xingheng
        6
    xingheng  
       2020-06-03 22:17:49 +08:00
    直接双端指针往中间遍历并且比较平方值就行了,不需要 sort,时间复杂度 O1,空间复杂度 On 。
    rrfeng
        7
    rrfeng  
       2020-06-03 22:25:13 +08:00 via Android
    我先取中间看正负,然后挑正负数多的那一边开始算,算到符号变化之后开始插入排序

    或者正负都算出来然后归并

    还有啥降低复杂度的办法呢
    rrfeng
        8
    rrfeng  
       2020-06-03 22:25:43 +08:00 via Android
    哦对双指针最优……
    luckyrayyy
        9
    luckyrayyy  
       2020-06-03 22:29:23 +08:00
    @xingheng 双指针时间不是 On 么?
    xingheng
        10
    xingheng  
       2020-06-07 09:09:11 +08:00
    @luckyrayyy 你说得对,是我想差了。逃...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3520 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:19 · PVG 19:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.