力扣刷题-数组篇-有序数组的平方

一. 题目描述

题目链接:有序数组的平方

二. 思考步骤

  1. 最先想到的暴力排序:将数组中每个元素平方后,直接使用sort函数(类似于快排的方法)排序。时间复杂度为O(n + nlogn),是一个循环数组计算的时间,加上一个将数组排序的时间。
    代码示例:
    在这里插入图片描述
  2. 双指针大法:
    一开始没想到,参考了一下题解才反应过来。首先我们需要定义一个新的数组,和两个指针,分别为前后指针。
    由于题目给出的是一个升序的数组,每个元素值平方后整个数组的元素最大值必在两端。所以我们只要不停的比较两个端点,大的元素值拿出来赋值给新数组(当然是从大到小哦),然后相应的端点被提取元素后,就需要往前(或后)移动一位,对下一个元素进行比较。这样就可以将元素的最大值,次大值一个一个提取出来,然后赋值给新数组,最后直接输出即可。
    时间复杂度:
    只存在一层循环,其时间复杂度为O(n),但是牺牲了O(n)的空间复杂度,典型的用空间换时间。
    代码示例:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值