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

    本题的难点在于存在负数,我们知道非负数的平方数排序规则一定与

    原数组顺序相同,但这里存在负数,导致无法直接确定

    方法一:先计算出所有数的平方,然后排序

    时间O(nlogn)(排序所用时间),空间O(logn)(排序所申请栈空间与深度有关,这里忽略了返回要求数组的空间)

     1 class Solution {
     2     public int[] sortedSquares(int[] nums) {
     3         int[] ans = new int[nums.length];
     4         for (int i = 0; i < nums.length; ++i) {
     5             ans[i] = nums[i] * nums[i];
     6         }
     7         Arrays.sort(ans);
     8         return ans;
     9     }
    10 }

    方法二:使用双指针,头尾2个指针比较绝对值大小,然后倒叙填充返回数组

    时间O(n),空间O(1)(这里不计算申请返回结果所申请的O(n)空间)

     1     public int[] sortedSquares(int[] nums) {
     2         int[] res = new int[nums.length];
     3         for(int i=0,j=nums.length-1,k=nums.length-1;i<=j;){
     4             if(Math.abs(nums[i])>Math.abs(nums[j])){
     5                 res[k--]=nums[i]*nums[i];
     6                 i++;
     7             }else{
     8                 res[k--]=nums[j]*nums[j];
     9                 j--;
    10             }
    11         }
    12         return res;
    13     }
    争取早日不再是一只菜鸡
  • 相关阅读:
    python 获取Excel 的内容
    python 获取文件Excel 的行数与列数
    python 读取Excel 取出表头(列名)
    DRF的视图组件
    Redis
    Git的故事
    DRF的JWT用户认证
    DRF的三大认证组件
    DRF的序列化组件
    DRF的请求响应组件
  • 原文地址:https://www.cnblogs.com/jchen104/p/14699365.html
Copyright © 2011-2022 走看看