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

算法题(Python)数组篇 | 3.有序数组的平方

算法题(Python)数组篇 | 3.有序数组的平方

  • 一、题目描述
  • 二、题解
    • 2.1 解法一:暴力解法
    • 2.2 解法二:双指针法

一、题目描述

给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例1:

输入:nums = [-4, -1, 0, 3, 10]
输出:[0, 1, 9, 16, 100]
解释:平方后,数组变为[16, 1, 0, 9, 100],排序后,数组变为[0, 1, 9, 16, 100]

示例2:

输入:nums = [-7, -3, 2, 3, 11]
输出:[4, 9, 9, 49, 121]

提示:

1 <= nums.length <= 10000
-10000 <= nums[i] <= 10000
nums已按非递减顺序排序

二、题解

2.1 解法一:暴力解法

最直观的想法莫过于:每个数平方之后,排个序,代码如下:

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:for i in range(len(nums)):nums[i] *= nums[i]nums.sort()return nums

2.2 解法二:双指针法

数组本身是有序的,只是负数平方之后可能会成为最大数。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。此时可以考虑双指针法,i指向起始位置,j指向终止位置。
定义一个新数组result,和输入数组A的大小一样,让k指向result数组的终止位置。
如果A[i]∗A[i]<A[j]∗A[j]A[i] * A[i] < A[j] * A[j]A[i]A[i]<A[j]A[j],那么result[k−−]=A[j]∗A[j]result[k--] = A[j] * A[j]result[k]=A[j]A[j]
如果A[i]∗A[i]>=A[j]∗A[j]A[i] * A[i] >= A[j] * A[j]A[i]A[i]>=A[j]A[j],那么result[k−−]=A[i]∗A[i]result[k--] = A[i] * A[i]result[k]=A[i]A[i]
如下图所示:
在这里插入图片描述
在这里插入图片描述
代码如下:

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:i, j, k = 0, len(nums) - 1, len(nums) - 1res = [float('inf')] * len(nums)  # 需提前定义列表,存放结果while i <= j:if nums[i] ** 2 <= nums[j] ** 2:  # 左右指针所指向的值的平方的大小比较res[k] = num[j] ** 2j -= 1    # 右指针向左移动else:res[k] = nums[i] ** 2i += 1   # 左指针向右移动k -= 1   # 结果指针向左移动return res
http://www.dtcms.com/a/573921.html

相关文章:

  • 网站引流怎么做广告海报图片
  • 专业人士怎样建网站超星网站开发实战答案
  • 做推广的网站那个好网路营销网站策划书
  • muduo库学习(1):Reactor模型的设计思想
  • 分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
  • 【UE·优化篇】使用FramePro优化UI性能
  • 网站建设个人工作室seo在线培训机构
  • 免费做网站怎么做网站吗上海做网站比较好的
  • 【观察者模式】深入 Spring 事件驱动模型:从入门到微服务整合实战
  • 大连永锐网站哪家做的推荐常州网站建设
  • React的设计理念与核心特性
  • 单片机中NRST引脚复用为GPIO
  • React 13
  • 【功能安全】AEB功能HARA分析
  • 佛山做外贸网站特色中企动力做过的网站
  • 重庆网站建设冒号做网站优化给业务员提成
  • 影刀RPA完全指南:从零入门到自动化高手(2/10)
  • 学习笔记:Jquery getJSON方法分析(一)
  • Linux--进程池
  • 洞头区网站建设收费网站模板制作步骤
  • wordpress直接自己网站怎么做优化
  • 【开题答辩全过程】以 分布式菌菇销售系统为例,包含答辩的问题和答案
  • ui设计网站建设是什么意思深圳做网站制作
  • Canal:让 MySQL 数据同步像呼吸一样自然
  • PE工具开发实战:非正向与安全解析
  • 进一步加强网站建设管理郑州app拉新项目
  • 徐州百度推广总代理台州专业关键词优化
  • C++ 中模板元编程与 SFINAE 机制
  • 【实用运维工具】一键完成Oracle数据库的健康巡检,生成WORD报告
  • ICLR 2025 Spotlight | 打破AI“黑箱”!最新IIS评分框架:揭示模型性能与可解释性的共生关系