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

100.有序数组的平方(力扣)

代码解决一

class Solution {
public:// 函数接受一个整数数组,返回每个元素平方值排序后的结果vector<int> sortedSquares(vector<int>& nums) {int len = nums.size(); // 获取数组的长度vector<int> v; // 创建一个新的数组,用于存储平方值v.resize(len); // 设置新数组的大小为原数组的长度// 遍历原始数组,计算每个元素的平方值,并存储到新数组for (int i = 0; i < len; i++) {v[i] = nums[i] * nums[i];}// 对新数组进行排序,得到按平方值排序后的结果sort(v.begin(), v.end());// 返回排序后的数组return v;}
};

代码思想

  1. 获取数组的长度 len

  2. 创建一个新的数组 v,用于存储每个元素的平方值,并且设置其大小为数组的长度。

  3. 使用循环遍历原始数组 nums,计算每个元素的平方值,并将其存储到新数组 v 的相应位置。

  4. 对新数组 v 进行排序,以得到按平方值排序后的结果。

  5. 返回排序后的数组 v

 代码解决二

class Solution {
public:// 函数接受一个已排好序数组,返回每个元素平方值排序后的结果vector<int> sortedSquares(vector<int>& nums) {int n = nums.size(); // 获取数组的长度vector<int> v(n); // 创建一个新的数组,用于存储平方值并保持排序// 初始化左右指针和新数组的位置指针for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {// 比较两端元素的平方值大小,较大者放到新数组的末尾if (nums[i] * nums[i] > nums[j] * nums[j]) {v[pos] = nums[i] * nums[i];i++; // 移动左指针} else {v[pos] = nums[j] * nums[j];j--; // 移动右指针}pos--; // 移动新数组的位置指针}return v; // 返回排序后的数组}
};

 代码思想

具体思路如下:

  1. 首先,初始化三个变量:

    • i 表示左指针,从数组的开头开始;
    • j 表示右指针,从数组的末尾开始;
    • pos 表示新数组 v 中的位置指针,从末尾开始。
  2. 使用循环(for 循环)进行遍历,循环条件是 i 小于等于 j

  3. 在每一次循环中,比较左指针 i 所指元素的平方值与右指针 j 所指元素的平方值的大小。将较大者的平方值存储到新数组 v 的当前位置 pos 中,然后根据比较结果移动相应的指针:

    • 如果 nums[i] * nums[i] > nums[j] * nums[j],则将 nums[i] * nums[i] 存储到 v[pos],同时将左指针 i 向右移动一步(i++);
    • 否则,将 nums[j] * nums[j] 存储到 v[pos],同时将右指针 j 向左移动一步(j--)。
  4. 在每一步迭代中,新数组 v 的位置指针 pos 向前移动一步(pos--),用于存储下一个平方值。

  5. 循环结束后,新数组 v 中存储了原始数组 nums 中每个元素的平方值,并且按照从小到大的顺序排列。

  6. 最终,返回新数组 v

http://www.lryc.cn/news/249926.html

相关文章:

  • 微服务--01--简介、服务拆分原则
  • IntelliJ IDEA安装使用教程
  • 校园门禁可视化系统解决方案
  • rest_framework_django学习笔记一(序列化器)
  • 面试题:什么是负载均衡?常见的负载均衡策略有哪些?
  • 精通Git(第2版)读书笔记
  • XUbuntu22.04之OBS30.0设置录制音频降噪(一百九十六)
  • 渗透测试学习day4
  • Deepin使用记录-deepin系统下安装RabbitMq
  • 【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
  • Pytorch中的gather的理解和用法
  • 唯创知音WTN6系列语音芯片:高音频采样率与精细音量控制赋能广泛应用
  • 机器人分类
  • html/css中位置position的绝对位置absolute顺时针盒子案例图片排序
  • 分享86个清新唯美PPT,总有一款适合您
  • 虚拟机系列:Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置
  • 【数据库】数据库并发控制的冲突检测,冲突可串行化的调度,保障事务的特性
  • java 对象大小计算
  • 12个国外电子元器件基本参数(下)
  • Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
  • SSH基础和高级用法
  • 算法通关第十三关-青铜挑战数学基础问题
  • 如何使用 Freepik 的 Pikaso 工具来画图
  • 一个没正常处理tcp对端关闭的bug
  • 什么是JDK
  • 积分表二(高等数学同济版中所有的积分公式)
  • Golang数据类型(数字型)
  • 【JVM系列】- 穿插·对象的实例化与直接内存
  • 【C++干货铺】继承 | 多继承 | 虚继承
  • 【ARM CoreLink 系列 8.1 -- SMMU 详细介绍-STE Entry 详细介绍 1】