当前位置: 首页 > news >正文

代码随想录-数组03-977 有序数组的平方-java

目录

描述

思路 

代码


  •    描述


  • 思路 

  • 暴力破解

       平方之后重新排序,用快排的时间复杂度O(n+logn)

  • 双指针法

数组本来是有序的,平方之后无序的地方是开头和结尾,因为有负数的出现,使用左右双指针用一个循环就可以了

重新创建一个和原数组大小一致的数组,记录平方后有序的值

int left = 0;

int right = nums.length-1;

int k= nums.length-1;

int []res = new int[nums.length];

for(;left<=right;)

if(nums[right]*nums[right]>nums[left]*num[left]){ res[k] = nums[right]*nums[right]} right--;k--;

if(nums[right]*nums[right<=nums[left]*num[left]){ res[k] = nums[left]*num[left]} left++;k--;

  • 代码

        暴力破解:

class Solution{
    public int[] sortedSquares(int[] nums){
        for(int i=0;i<nums.length;i++){
            nums[i] = nums[i]*nums[i];
        }
        Arrays.sort(nums);
        return nums;
    }
}

          双指针:

class Solution{
    public int[] sortedSquares(int[] nums){
        int left =0;
        int right = nums.length-1;
        int k = nums.length-1;
        int []res = new int[nums.length];
        for(;left<=right;){
            if(nums[left]*nums[left]<nums[right]*nums[right]){
                res[k] = nums[right]*nums[right];
                k--;
                right--;
            }
            else{
                res[k] = nums[left]*nums[left];
                k--;
                left++;
            }
        }
        return res;
    }
}

相关文章:

  • 鸿蒙HarmonyOS-Navagation基本用法
  • JavaWeb-HttpServletRequest请求域接口
  • Unity实现在镜子间反射光柱
  • PySide(PyQT)的视图(QGraphicsView)范例(一) 基本框架
  • CSRF 攻击详解:原理、案例与防御
  • kubernetes介绍
  • 10.RabbitMQ集群
  • 【大数据项目】计算机行业招聘数据处理与分析系统
  • 2025.3.3总结
  • 面试基础---MySQL 事务隔离级别与 MVCC 深度解析
  • Mac安装配置使用nginx的一系列问题
  • git 学习笔记
  • 【消息队列】BrokerServer的核心概念
  • 在Electron中通过Node-API调用DLL导出函数的完整指南
  • 神经网络前向微分和后向微分区别
  • 面试题汇总(一)
  • 机器学习4-PCA降维
  • CMake学习笔记(一):工程的新建和如何将源文件生成二进制文件
  • conda 更换镜像究极方法
  • 新品速递 | 多通道可编程衰减器+矩阵系统,如何破解复杂通信测试难题?
  • 澄海网站建设/seo营销名词解释
  • 邹城建设银行网站/广告牌
  • 网站建设合同示范文本/快速seo排名优化
  • 祭祀网站建设方案/学seo建网站
  • 网站建设空间申请/网站免费搭建平台
  • 广州市建设委员会网站/关键词如何优化排名