算法第六天:力扣第977题有序数组的平方

一、977.有序数组的平方的链接与题目描述

977. 有序数组的平方的链接如下所示:https://leetcode.cn/problems/squares-of-a-sorted-array/description/icon-default.png?t=N7T8https://leetcode.cn/problems/squares-of-a-sorted-array/description/

     给你一个按 非递减顺序 排序的整数数组 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 <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非递减顺序 排序

    进阶:

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

二、977.有序数组的平方的c++代码: 

   第一种方法:双指针的时间复杂度o(n),具体代码如下:

        vector<int> result(nums.size(), 0);int n=nums.size()-1;int left=0, right=n;while(left<=right){if(pow(nums[left], 2)>pow(nums[right], 2)){result[n--]=pow(nums[left], 2);left++;}else{result[n--]=pow(nums[right], 2);right--;}}return result;

    第二种方法:快速排序的时间复杂度o(nlogn) ,具体代码如下:

        for(int i=0;i<=nums.size()-1;i++){nums[i]*=nums[i]; //快速排序}sort(nums.begin(), nums.end());return nums;

三、解题思路

    本题主要讲解双指针的算法思路,下面的本题的4个步骤:

  1. 定义左指针的索引值为0,右指针为nums.size()-1,容器result装平方后的数组元素;
  2. 用while判断条件,如果左指针的值小于等于右指针的值,则循环继续,反之,则终止;
  3. 判断数组开始的值的平方是否大于末尾的值的平方,如果大于,输入result[n--]=pow(nums[left], 2); left++,反之,则result[n--]=pow(nums[right], 2); right--;
  4. 最后输出result,得出答案。

    感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您双指针的一些算法知识和启发。如果您有任何问题或意见,请随时联系我或在评论区评论。希望本题的算法知识对大家有帮助,谢谢各位读者的支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL中stack和queue(适配器版)的模拟实现

前言&#xff1a;在此之前我们讲到了stack和queue还有deque的常见的使用方法&#xff0c;并且也在数据结构的时候用C语言去实现过栈和队列&#xff0c;今天我们将进一步的用C去模拟实现stack和queue &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; …

vue 之 vuex

目录 vuex 是什么 Vuex管理哪些状态呢&#xff1f; Vuex 页面刷新数据丢失怎么解决 1. 使用浏览器的本地存储 2. 使用 Vuex 持久化插件 3. 使用后端存储 注意事项 Vuex 为什么要分模块并且加命名空间 vuex 是什么 vuex 是专门为 vue 提供的全局状态管理系统&#xff0c…

【应用案例】如何解决无人驾驶车辆的动力转向问题

埃尔朗根-纽伦堡大学名称为高能赛车运动队(High-Octane Motorsports e.V.)的学生方程式车队都设计、构建和制造具有创新意义且独特的赛车。然后&#xff0c;他们将参加三种不同类别的大学生方程式比赛&#xff1b;该项赛事中的参赛队伍来自于世界各地。 电动、无人驾驶和燃油车…

Windows 11 24H2版首发体验!附详细更新升级安装教程

Windows 11 24H2 版首发体验&#xff01;这是微软2024年的大版本更新&#xff0c;新增超多新功能&#xff0c;以下会给你细细道来。这个版本目前小编亲测&#xff0c;使用非常流畅&#xff0c;没有什么明显问题。系统是已经集成了VB6/VC2005/VC2008/VC2010/VC2012/VC2013/VC201…

Dorkish:一款针对OSINT和网络侦查任务的Chrome扩展

关于Dorkish Dorkish是一款功能强大的Chrome扩展工具&#xff0c;该工具可以为广大研究人员在执行OSINT和网络侦查任务期间提供强大帮助。 一般来说&#xff0c;广大研究人员在执行网络侦查或进行OSINT信息收集任务过程中&#xff0c;通常会使用到Google Dorking和Shodan&…

2024年高考:计算机相关专业还值得选择吗?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 行业竞争现状 市场饱和与新兴技术的影响 如何保持竞争力 专业与个人的匹配度判断 专业核心课程与技术能力 个人兴趣与职业…

使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)

目录 1、使用场景 2、压缩包的创建 3、压缩包的解压 4、CloseZipZ和CloseZipU两接口的区别 5、开源zip.cpp和unzip.cpp文件的下载 VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排…

【C语音 || 数据结构】二叉树--堆

文章目录 前言堆1.1 二叉树的概念1.2 满二叉树和完美二叉树1.3 堆的概念1.4 堆的性质1.4 堆的实现1.4.1堆的向上调整算法1.4.1堆的向下调整算法1.4.1堆的接口实现1.4.1.1堆的初始化1.4.1.2堆的销毁1.4.1.3堆的插入1.4.1.4堆的删除1.4.1.4堆的判空1.4.1.4 获取堆的数据个数 前言…

单体架构改造为微服务架构之痛点解析

1.微服务职责划分之痛 1.1 痛点描述 微服务的难点在于无法对一些特定职责进行清晰划分&#xff0c;比如某个特定职责应该归属于服务A还是服务B? 1.2 为服务划分原则的痛点 1.2.1 根据存放主要数据的服务所在进行划分 比如一个能根据商品ID找出商品信息的接口&#xff0c;把…

随手记:uniapp图片展示,剩余的堆叠

UI效果图&#xff1a; 实现思路&#xff1a; 循环图片数组&#xff0c;只展示几张宽度就为几张图片边距的宽度&#xff0c;剩下的图片直接堆叠展示 点击预览的时候传入当前的下标&#xff0c;如果是点击堆叠的话&#xff0c;下标从堆叠数量开始计算 <template><…

力扣每日一题(2024-06-13)2813. 子序列最大优雅度

基于官方题解&#xff0c;进行补充说明 给你一个长度为 n 的二维整数数组 items 和一个整数 k 。 items[i] [profiti, categoryi]&#xff0c;其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。 现定义 items 的 子序列 的 优雅度 可以用 total_profit distinct_…

Flutter InteractiveViewer CustomPaint的使用总结

最近产品上有个图片编辑的需求&#xff0c;需要对编辑区域做放大和缩小&#xff0c; 以方便用户编辑图片。做起来远比博主当初预想的要难受。这期间遇到几个问题。一一做一下记录。 如果只是单纯的缩放&#xff0c;没有对缩放的内容进行改变和更新&#xff0c; 那么基本没啥问…

go语言,拼接字符串有哪些方式

目录 第一种方式&#xff1a; 使用加号"" 第二种方式&#xff1a; 使用fmt.Sprintf 第三种方式&#xff1a; 使用strings.Join 第四种方式&#xff1a; 使用strings.Builder 第五种方式&#xff1a; 使用bytes.Buffer go语言&#xff0c;拼接字符串的方式有…

pycharm基本使用(常用快捷键)

0.下载 pycharm官网下载 选择合适的版本&#xff0c;本文以2024.1为例 1.简单应用 常用快捷键 ctrlD 复制当前行 ctrlY 删除当前行 ctrlX 剪切当前行&#xff08;可用作删除&#xff0c;更顺手&#xff09; shift↑ 选中多行ctrlshiftF10 运行 shiftF9 调试ctrl/ 注释当前…

数据结构入门:探索数据结构第一步

0.引言 在我们的日常生活中&#xff0c;经常需要管理大量的数据&#xff0c;就譬如学校中有好几千个学生&#xff0c;中国有十三亿人口&#xff0c;对于那么多的数据进行查找、插入、排序等操作就会比较慢。人们为了解决这些问题&#xff0c;提高对数据的管理效率&#xff0c;…

HTML实现进度条/加载框模版

HTML加载 一、环形加载 1二、环形加载 2三、波形加载四、百分比环形五、进度条 一、环形加载 1 <div class"loader"></div>.loader {border: 16px solid #f3f3f3;border-radius: 50%;border-top: 16px solid #3498db;width: 120px;height: 120px;-webki…

JavaScript 在浏览器和 Node.js 里的运行流程

浏览器中的 JavaScript 运行流程 加载与解析 HTML&#xff1a;浏览器首先加载 HTML 文档&#xff0c;并开始解析构建 DOM 树。这一步骤包括下载并解析所有的 HTML 标记。 发现 JavaScript 资源&#xff1a;当浏览器遇到 <script> 标签时&#xff0c;解析过程会暂停并开始…

docker被封禁,怎么拉取镜像,打包所有镜像

因为docker被国内封禁了&#xff0c;所以我把电脑上之前的镜像全部打包出来了 你们也可以打包&#xff0c;我提供一个脚本&#xff0c;你运行即可 export_docker.sh #!/bin/bash# 导出目录 EXPORT_DIR"docker_images_backup" mkdir -p "$EXPORT_DIR"# 获…

Calibre版图验证工具调用_笔记

Siemens EDA Calibre版图验证工具调用 采用Cadence Virtuoso Layout Editor直接调用Siemens EDA Calibre工具需要进行文件设置&#xff0c; 在用户的根目录下&#xff0c;找到.cdsinit文件&#xff0c; 在文件的结尾处添加以下语句即可&#xff0c;其中&#xff0c;calibre.skl…

vue3 computed 返回计算内容

const ItemPercent computed(() > {return (item: any) > {const num item.polishTaskList.filter((row: any) > row.carryOutState 1).lengthreturn (num / item.polishTaskList.length) * 100}}) 我现在有一个列表 列表中有每一项 根据每一项的数据 计算 或显…