zoukankan      html  css  js  c++  java
  • LeetCode 977 有序数组的平方

    LeetCode 977 有序数组的平方
    问题描述:
    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

    一次遍历

    • 利用数组原本存在的有序性(复数绝对值递减、非负数递增)

    执行用时:2 ms, 在所有 Java 提交中击败了66.81%的用户
    内存消耗:40.8 MB, 在所有 Java 提交中击败了15.99%的用户

    class Solution {
        //双指针
        public int[] sortedSquares(int[] A) {
            if(A==null || A.length==0) {
                return A;
            }
    
            //找到负数最大的位置p1、非负数最小的位置p2
            int p1 = 0, p2 = 0;
            for(int i=0; i<A.length; i++) {
                if(A[i]>=0) {
                    p1 = i-1;
                    p2 = i;
                    break;
                }
            }
    
            //由p1、p2向两边遍历
            int[] ans = new int[A.length];
            int curr = 0;
            while(curr<A.length) {
                if(p1>=0 && p2<A.length) {
                    if(A[p1]+A[p2]>=0) {
                        ans[curr++] = (int)Math.pow(A[p1], 2);
                        p1--;
                    }
                    else {
                        ans[curr++] = (int)Math.pow(A[p2], 2);
                        p2++;
                    }
                }
                else {
                    ans[curr++] = (p1<0?0:(int)Math.pow(A[p1], 2)) 
                                    + (p2>=A.length?0:(int)Math.pow(A[p2], 2));
                    p1 = p1<0? p1: p1-1;
                    p2 = p2>=A.length? p2: p2+1;
                }
            }
    
            return ans;
        }
    }
    
  • 相关阅读:
    Python阶段复习
    Python阶段复习
    Python学习笔记
    Python爬虫学习
    Python爬虫学习
    Python学习笔记
    史上最全的Maven Pom文件标签详解
    css3 animation动画技巧
    常用的sass编译库
    compass做雪碧图
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13824565.html
Copyright © 2011-2022 走看看