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

leetcode 977. Squares of a Sorted Array

题目描述

双指针法一

用right表示原数组中负数和非负数的分界线。

nums[0,right-1]的是负数,nums[right,nums.size()-1]是非负数。

然后用合并两个有序数组的方法。合并即可。

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> res;int len = nums.size();res.reserve(len);int right = -1;for(int i =0;i <len;i++){if(right == -1 && nums[i] >=0)right = i;nums[i] = nums[i]*nums[i];}int left = right-1;if(right == -1){right = len;left = len -1;}while(left >= 0 && right < len){if(nums[left]<=nums[right]){res.push_back(nums[left--]);}else{res.push_back(nums[right++]);}}while(left>=0){res.push_back(nums[left--]);}while(right<len){res.push_back(nums[right++]);}return res;}
};

双指针法二

容易发现原数组中元素的绝对值从两端向中间减小。因此可以逆序确定res数组。

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int len = nums.size();vector<int> res(len,0);int left = 0;int right = len -1;int res_pos = len - 1;while(left <= right){if(abs(nums[left]) > abs(nums[right])){res[res_pos--] = nums[left]*nums[left];left++;}else{res[res_pos--] = nums[right]*nums[right];right--;}}return res;}
};
http://www.xdnf.cn/news/246259.html

相关文章:

  • 【免费】1992-2021年各省GDP数据/各省地区生产总值数据
  • GoogleTest:简单示例及ASSERT/EXPECT说明
  • [FPGA 官方 IP] Binary Counter
  • 多节点监测任务分配方法比较与分析
  • 深度学习-神经网络参数优化的约束与迭代策略
  • 今日行情明日机会——20250430
  • python拜占庭将军
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的电商直播流量转化路径研究
  • 计算机操作系统知识集合
  • 2025五一杯B题五一杯数学建模思路代码文章教学: 矿山数据处理问题
  • android 中的AMS 和 WMS
  • 【Day 14】HarmonyOS分布式数据库实战
  • linux下安装ollama网不好怎么办?
  • C++类和对象
  • c++文字游戏_废弃医院篇1.0
  • MySQL 查找指定表名的表的主键
  • javaScript——DOM续(五)
  • Vercel 全面指南:从零部署到高级实践
  • RAG技术完全指南(一):检索增强生成原理与LLM对比分析
  • Java反射机制终极指南:从基础到高级应用
  • 浅谈高校教育改革
  • C语言中数字转化为字符串的方法
  • 计算机视觉——基于树莓派的YOLO11模型优化与实时目标检测、跟踪及计数的实践
  • 网络通信问题及解决方案
  • 【LeetCode Hot100】图论篇
  • Winform(7.序列化方式整理)
  • QML Image 组件详解
  • 课题推荐——通信信号处理中的非线性系统状态估计(如信号跟踪、相位恢复等场景),使用无迹卡尔曼滤波(UKF)的非线性滤波算法,MATLAB实现
  • 数据结构之-----“交换排序”“归并排序”“计数排序”
  • JavaScript性能优化实战之资源加载与构建优化