【数组平方】

文章探讨了数组平方的问题,提供了两种解决方案:一是暴力解法,先平方再排序,但效率较低;二是双指针法,适用于含正负数的升序数组,通过两个指针从两端向中间遍历,避免数组越界,提高效率。这种方法尤其考虑了负数平方后的排序特点。
摘要由CSDN通过智能技术生成

一、例题

在这里插入图片描述

二、思路

1、暴力解法:先平方,后排序;
2、双指针法:两个指针分别指向数组的首部和尾部,每次比较两 个指针所指值的大小,将大的逆序放入新数组。将双指针从外向内移动不会发生数组越界问题。

三、解析

1)暴力解法

1、代码实现

在这里插入图片描述

2、缺点

暴力解法没有利用题目中给到的条件:给定一个含正负数的升序数组。所以平方以后的大值肯定出现在两侧,不是左边就是右边(负数的平方为正数)。

2)双指针法

1、动画演示

在这里插入图片描述

2、代码实现

在这里插入图片描述

3、双指针的优势

原数组所有数平方后,负数可能成为最大值,平方后最大值只可能在两端出现,不可能在中间。原数组一个指针i指向前端,一个j指向末端。排序得到的数值只可能为最大值,所以一个指针p指向新数组末端,从最大值开始赋值

四、问题特点

1.非递减顺序:数列是递减的,不是单调递减,有重复值;
2.数字的平方:任何整型数平方后都是非负数,所以要考虑负数平方后的位置;
3.新数组:创建一个新数组方法;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiang_fish-balls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值