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

给你一个按 非递减顺序 排序的整数数组 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]

进阶

请你设计时间复杂度O(n) 的算法解决本问题

思路和算法
在这里我的想法是首先先对原数组nums的每个元素进行平方处理,而后再通过比对新的nums首尾元素大小来决定放入res数组的顺序。
代码(c++)

class Solution {public:/**     时间复杂度O(n),n是数组nums的长度;空间复杂度O(1),除了存储答案的数组以外,我们只需要维护常量空间   */vector<int> sortedSquares(vector<int>& nums) {int n = nums.size() - 1;int left = 0;int right = n;vector<int> res(n + 1);for (int i = 0; i <= n; ++i) {nums[i] *= nums[i];}while (left <= right) {if (nums[left] >= nums[right]) {res[n] = nums[left];++left;}else {res[n] = nums[right];--right;}--n;}return res;}
};

虽然做出来了,但也还是不开心。因为我看官方题解的第三种解法,我和它差不太多,但是关于时间复杂度和空间复杂度这两点,我不是很明白为什么是O(n)和O(1)。好迷~

力扣题:977. 有序数组的平方相关推荐

  1. 力扣题解-977. 有序数组的平方

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

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

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

  3. 力扣977有序数组的平方(c++版)

    977有序数组的平方(c++版) 链接: 力扣题目链接 思路 首先要理解题目里的非递减顺序是什么意思. 非递减顺序排列即是指:意思是关键字递增序排列,但是并非单调递增(因为有重复的关键字)从小到大或者 ...

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

    代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方 题目链接:有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整 ...

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

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

  6. 【代码随想录训练营】【Day02】第一章|数组|977.有序数组的平方|209.长度最小的子数组|59.螺旋矩阵II|总结

    977. 有序数组的平方 题目详细:LeetCode.977 解这道题的思路和方法有很多,最简单的方法就是计算出数组中每个元素的平方数,并记录在新数组中,最后对新数组进行排序即可得到答案,但这个方法效 ...

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

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

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

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

  9. 977. 有序数组的平方|209. 长度最小的子数组|59. 螺旋矩阵 II

    977. 有序数组的平方 原理 准备:双指针.一个空数组.双指针指向的两个元素作比较,更大的数平方之后,放入空数组的尾部空位. 图解 其实这题的指针有两种方法: 从两边向中间靠拢,得到的是由大到小的值 ...

最新文章

  1. python 脚本撞库国内“某榴”账号
  2. 【Python】特征选择方法
  3. 构件图(Component Diagram)—UML图(八)
  4. CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
  5. ubuntu如何安装samba
  6. Unreal3 window下内存管理实现详解
  7. Entity Framework Core 3.0 和 Entity Framework 6.3 正式发布
  8. String StringBuilder StringBuffer
  9. nullnullvc中加花
  10. PSD缩略图的设置方法
  11. matlab simulink 例子,simulink实例超实用
  12. 话费充值api接口 手机话费充值功能接入
  13. 浅谈自然语言处理(NLP)学习路线(一)--- 概述
  14. 如何做到高效沟通和高效沟通的好处
  15. 80+的AI音频工具你值得拥有
  16. 大白菜无法打开计算机硬盘,USB接口损坏了?教你windows7硬盘安装步骤图文详解!...
  17. 使用IBM InfoSphere Guardium Data Redaction在保护隐私的同时共享信息
  18. 抗阿达木单抗的抗体可能与阿达木单抗治疗过程中静脉和动脉血栓事件相关
  19. 源码分析 merge 标签减少布局层级的秘密(Android Q)
  20. 主成分分析碎石图_Plotting PCA (主成分分析详细完美补充!!!!)

热门文章

  1. 爬虫练习-爬取笔趣阁小说
  2. AIfloki——碾压AIdoge,开启链游新时代
  3. 游戏服务器的压力测试应该如何进行
  4. 互联网人才结构与流动报告2021
  5. 全网通PA:SKY68018-11 Gigadata低功耗PA
  6. 赫兹 (单位) Hz
  7. 51Nod 圆与三角形
  8. IOS开发系列—Objective-C之内存管理
  9. 微积分知识点回顾与总结(十):级数
  10. Oracle Check约束