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

市政建设招标网站有哪些百度推广投诉人工电话

市政建设招标网站有哪些,百度推广投诉人工电话,厦门专业网站建设团队,wordpress在评论框中加文字代码随想录 第一章 数组 977.有序数组的平方 题目:977.有序数组的平方 题目描述:给你一个按 非递减顺序 排序的整数数组 nums​,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 一、思想 在有序数组的平方排序…

代码随想录 第一章 数组 977.有序数组的平方

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

  • 题目描述:给你一个按 非递减顺序 排序的整数数组 nums​,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

一、思想

在有序数组的平方排序问题中,双指针算法的核心思想是双指针法通过逆向填充最大值的方式,利用原数组的非递减特性,高效构造有序结果:

  1. 双指针定位极值
    使用两个指针分别指向数组的左端(最小负数)和右端(最大正数) ,通过比较两者的平方值确定当前最大值。
  2. 逆向填充有序结果
    从结果数组的末尾开始填充(k = n-1​),每次将当前最大的平方值逆序插入,确保结果数组自然升序。

二、代码

/*** 该函数用于计算给定整数数组的平方后排序后的结果* @param nums 输入的整数数组* @return 平方后排序后的结果*/
class Solution
{
public:vector<int> sortedSquares(vector<int> &nums){// 初始化结果数组的索引int k = nums.size() - 1;// 创建结果数组vector<int> res(nums.size());// 双指针法,从数组两端开始比较,将较大的平方值放入结果数组for (int left = 0, right = nums.size() - 1; left <= right;){// 如果左边元素的平方大于右边元素的平方if (nums[left] * nums[left] > nums[right] * nums[right]){// 将左边元素的平方放入结果数组res[k--] = nums[left] * nums[left];// 左指针右移left++;}else{// 将右边元素的平方放入结果数组res[k--] = nums[right] * nums[right];// 右指针左移right--;}}// 返回结果数组return res;}
};

三、解析

1. 算法工作原理分解

  • 步骤 1:初始化指针
    创建两个指针 left​(指向数组左端,初始为 0)和 right​(指向数组右端,初始为 n-1​),以及结果数组 res​ 的填充索引 k = n-1​。

  • 步骤 2:循环比较与填充
    每次循环比较 nums[left]​ 和 nums[right]​ 的平方值:

    • nums[left]^2 > nums[right]^2​,将 nums[left]^2​ 放入 res[k]​,然后 left​​ 右移(left++​)。
    • 否则,将 nums[right]^2​ 放入 res[k]​,然后 right​ 左移(right--​)。
    • 无论哪种情况,k​ 递减(k--​)。
  • 步骤 3:终止条件
    left > right​ 时,所有元素已处理完毕,返回 res​。

2. 关键点说明

关键点说明
双指针方向左指针从数组最小负数端出发,右指针从最大正数端出发,向中间移动。
逆序填充的必要性平方后的最大值只能从两端产生,逆序填充(从后往前)保证结果直接有序。
循环条件 left <= right必须包含 left == right​ 的情况,否则最后一个元素会被遗漏。

四、复杂度分析

  • 时间复杂度O(n)
    双指针 left​ 和 right​ 从两端向中间移动,每个元素仅被访问一次,总循环次数为 n​(数组长度),每一步操作(平方计算、比较、赋值)均为常数时间。快指针需要遍历整个数组一次,最坏情况下需要检查数组中的每个元素(n 为数组长度)。
  • 空间复杂度O(n)
    需要额外创建一个长度为 n​ 的结果数组 res​ 存储平方后的有序值。

http://www.dtcms.com/wzjs/333126.html

相关文章:

  • 花都区最新疫情今天seo需要懂代码吗
  • 海南通信建设有限公司官方网站百度推广登录平台官网
  • 德州做网站公司排行seo程序专员
  • 竞价网站制作网络营销和网上销售的区别
  • 西安网站开发公司有哪家2022知名品牌营销案例100例
  • 银川网站建设怎么样网络营销带来的效果
  • 陕西省交通建设集团公司西商分公司网站上海百度移动关键词排名优化
  • php网站开发案例教程平台做推广的技巧
  • 代理服务器上外网seo排名优化软件
  • 网站项目策划书方案搜索引擎优化seo什么意思
  • 专业网站建设网站站长平台网站
  • 去哪找做塑料的网站百度竞价课程
  • 昆明公司网站开发网站建设公司官网
  • 温州网站推广线上渠道推广怎么做
  • 做新闻网站如何河北网站seo外包
  • 济南电子商务网站建设网站建设技术外包
  • 河北做网站公司那家好seo的重要性
  • 河南网站建设公司排名网络销售好不好做
  • WordPress百科模板北京seo推广系统
  • 如何申请免费网站域名厦门百度seo排名
  • php做网站麻烦吗今天的热点新闻
  • 毕业设计是做网站设计济宁seo公司
  • 北京企业网站建设电话线下推广方式有哪些
  • 专业做微视频的网站seo sem是指什么意思
  • 贵阳网站托管洛阳seo博客
  • 我电脑做网站局域网怎么访问快速排名刷
  • 手机网站作用公司专业网站建设
  • 网站建设所需材料138ip查询网域名解析
  • 唐山论坛建站模板软服业营收破334亿
  • 做网站横幅的图片湖南seo优化价格