zoukankan      html  css  js  c++  java
  • leetcode之有序数组的平方

    题目描述:

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

    示例 1:

    输入:[-4,-1,0,3,10]
    输出:[0,1,9,16,100]
    

    示例 2:

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


    解题:
    非递减顺序排序的整数数组,如果存在负数,即是说元素平方后,原序列的整体大小情况是:大--小--大,这时候我们采用头尾指针的方式:
    头部第一个元素与尾部最后一个元素相互比较,即可得出最大的元素,将这个元素存进辅助数组最大的位置;
    头尾相互逼近式比较,直至头尾指针相遇,结束,这时辅助数组里的序列就是我们想要的结果。
    class Solution {
        public int[] sortedSquares(int[] A) {
            int len = A.length;
            if (len == 0) return new int[] {0};
            int[] res = new int[len];
            // 利用头尾双指针
            int i = 0;
            int j = len - 1;
            int cur = len-1;
            
            while(j>=i){
                if(A[i]*A[i] > A[j]*A[j]){
                    res[cur--] = A[i]*A[i];  //j--
                    i++;
                }
                else{
                    res[cur--] = A[j]*A[j];
                    j--;
                }
            }
            return res;
        }
    }
  • 相关阅读:
    [Linux]软件目录
    [Linux]查看Linux内核及发行版本
    [S7706]华为ACL
    [S7706]华为配置DHCP
    QML-密码管理器
    QML-AES加解密小工具
    LaTex中文article模板(支持代码、数学、TikZ)
    Memo-Tech
    VIM学习笔记
    CodeForces 674C Levels and Regions
  • 原文地址:https://www.cnblogs.com/lisen10/p/leetcode.html
Copyright © 2011-2022 走看看