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

力扣977. 有序数组的平方(双指针技巧)

Problem: 977. 有序数组的平方

文章目录

  • 题目描述
  • 思路
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

由于数组是非递减且包含正、负数,则假如我们将数组中的每一个元素取平方并且将其从原始的某一个位置分开成两个数组来看待(一个数组从前往后看,一个数组从后往前看)则这两个数组均为递减数组,此时我们再分别用两个指针指向原始数组的开头和结尾,每次比较取出平方数较大的存放在一个结果数组中(从后往前存放保证递增的特性)
时间复杂度:
O ( n ) O(n) O(n);

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution {
    public int[] sortedSquares(int[] nums) {
        int p1 = 0;
        int p2 = nums.length - 1;
        int p = nums.length - 1;
        int[] res = new int[nums.length];
        while (p1 <= p2) {
            int leftSquare = nums[p1] * nums[p1];
            int rightSquare = nums[p2] * nums[p2];
            if (leftSquare >= rightSquare) {
                res[p] = leftSquare;
                p1++;
            } else {
                res[p] = rightSquare;
                p2--;
            }
            p--;
        }
        return res;
    }
}

相关文章:

  • 【STM32】I²CC通信外设硬件I²CC读写MPU6050(学习笔记)
  • kubernetes高级实战
  • 6.3考研408数据结构中BFS与DFS的易错点及难点解析
  • 9、Python collections模块高效数据结构
  • 前端面试常考基础题目详解
  • 3月20号
  • 通过调整相邻分区实现Linux根分区扩容(ext4文件系统)
  • vue里localStorage可以直接用吗
  • Spring Boot 集成 Kafka 消息发送方案
  • idea配置gitee
  • QT 实现信号源实时采集功能支持频谱图,瀑布图显示
  • 【Linux进程】——进程的程序地址空间
  • B树与B+树在MySQL中的应用:索引
  • 华为OD机试-租车骑绿道-双指针(Java 2023 B卷 100分)
  • 【二分查找 并集查找】P6004 [USACO20JAN] Wormhole Sort S|普及+
  • vector和list的区别是什么
  • Golang 老题,生产者和消费者模型,先后关闭通道的问题
  • k8s主要控制器简述(二)DaemonSet|Job|CronJob
  • 蓝桥杯备考----》暴力枚举---金盏花
  • springboot实现文件上传到服务器上,并通过url访问
  • 东莞做网站优化哪家好/软文范例大全800字
  • 网站开发汇报/网奇seo培训官网
  • 黔西南北京网站建设/广告公司营销策划方案
  • 网站是做后台好还是做前台好/网站关键词优化软件效果
  • 工会网站平台建设/深圳推广公司哪家好
  • 免费手机端网站模板下载/百度指数名词解释