题目描述:

解题思路:

方法一:平方之后直接进行排序

小知识点
sorted和sort的不同点是:
(1)sort是对list进行的排序,而sorted是内建函数,可以对一切可以迭代的对象进行排序。
(2)sort排序是对原list进行操作,无返回值。sorted返回的是新的list。

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:# 遍历nums列表,然后每个num进行平方之后,再次回填到nums中# 使用内建函数对新list进行排序return sorted(num * num for num in nums)

方法二:双指针思路

因为输入数组是非递减排列的,那么我们可以利用这个特性。那么两端的数据一定是绝对值较大的,平方之后也一定是最大。那么我们可以设定左右指针,分别指向原list的最左端和最右端。从两端移动,比较左右指针指向的原数据平方之后哪个大,然后将其逆序放入新开辟的列表new_list。一直到左指针大于右指针为止!此时我们就将输入list的所有数进行了平方,并排好了顺序!
这种双指针的思路,很好的利用了输入list是非递减的特性!!!

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:length = len(nums)# 开辟同样大小的listnew_list = [0] * length# 左指针left = 0# 右指针right = length-1count = length-1while(left <= right):# 平方之后,较大的一者逆序放入new_list中if (nums[left] ** 2) >= (nums[right] ** 2):new_list[count] = nums[left] ** 2count -= 1left += 1else:new_list[count] = nums[right] ** 2count -= 1right -= 1return new_list

Python——LeetCode刷题——【977. 有序数组的平方】相关推荐

  1. LeetCode每日一题 977. 有序数组的平方

    题目链接 思路 双指针找绝对值最大的,最后反转数组. class Solution {public:vector<int> sortedSquares(vector<int>& ...

  2. LeetCode简单题之有序数组的平方

    题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1, ...

  3. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

    目录 一.今日心得感悟 1.数组从小到大排序 ①冒泡法--时间复杂度:O(nlogn) ②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O( ...

  4. 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...

  5. LeetCode刷题笔记2——数组2

    LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...

  6. 代码随想录算法训练营第二天|LeetCode 977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II

    LeetCode 977.有序数组的平方 题目链接:977.有序数组的平方 思路: 1.先对每个数进行遍历平方,并插入新的容器中 2.对容器进行排序,返回就可以了 缺陷:开辟了新的容器空间 class ...

  7. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、​LeetCode 209.长度最小的子数组、LeetCode 59.螺旋矩阵II

    LeetCode 977.有序数组的平方 双指针法:数组其实是有序的, 只不过负数平方之后可能成为最大数了.那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间.此时可以考虑双指针法 ...

  8. 力扣题:977. 有序数组的平方

    题目链接:977. 有序数组的平方 题目: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 示例 1: 输入:nums = [-4, ...

  9. LeetCode 977. 有序数组的平方(详解)

    977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序. 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,1 ...

  10. Leonard代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    第一章数组 (今日任务) 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理 ...

最新文章

  1. 201521123013 《Java程序设计》第13周学习总结
  2. 渥太华大学药学院院长Daniel Figeys团队诚邀药物-微生物组方向博士后
  3. dual orcal 虚拟表
  4. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法
  5. 物料BOM和生产订单BOM的区别
  6. matlab如何创建callback函数_如何学好MATLAB GUI
  7. hadoop家族的各个成员
  8. 牛客网【每日一题】Shortest Path 4月3日题目精讲 DFS
  9. [渝粤教育] 西南科技大学 机械控制工程基础在线考试复习资料
  10. win10右键闪退到桌面_WIN10设置闪退,桌面右键个性化显示设置等均无效
  11. boost学习之BOOST_PP_REPEAT
  12. spring 4 异常HttpMediaTypeNotAcceptableException解决方案
  13. Spring管理hibernate的事务的方法
  14. Ciena 在MEF16发布开放分布式NFV方案
  15. k均值聚类+基于核的k均值聚类+C++实现
  16. php程序读取firework生成的png图片数据
  17. 结构化、半结构化、非结构化的理解
  18. 图形界面中消息盒子的使用
  19. 基于阿里云的API简介
  20. PGSQL 模糊查询不区分大小写

热门文章

  1. 交叉编译器arm-linux-gcc,aarch64-himix200-linux-gcc命令找不到 not found ,所有原因全方位解析
  2. springboot通过ITextPDF写入模板并下载
  3. 【转】详解冠状面_水平面_矢状面_窗宽_窗位
  4. Python画柱状图(双柱状图,三柱状图)且显示对应数值
  5. elementui icon图标大全
  6. 网易云课堂学习-zk入门
  7. 《荒漠甘泉》4月19日
  8. 大衣哥触底反弹,和合国际传收购孟文豪《火火的情怀》
  9. 百度鹰眼服务安卓端示例工程使用流程
  10. Ubuntu环境中英文切换