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

每日一题(LeetCode)----数组--有序数组的平方

每日一题(LeetCode)----数组–有序数组的平方

1.题目([977. 有序数组的平方](https://leetcode.cn/problems/sqrtx/))

给你一个按 非递减顺序 排序的整数数组 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) 的算法解决本问题

2.解题思路

思路一: 双指针法

通过观察发现正数(包括零)平方后从左向右递增,负数平方后从右向左递增,所以我们先找到第一个不是负数的位置,然后找到最后一个负数的位置,将这组数进行平方操作,并放到一个新创建的vector中,最后从第一个不是负数的位置向左遍历,最后一个负数的位置向右遍历将这两个指针遍历到的数进行比较,然后依次往原有vector中放入排序好的元素注意如果某一指针移至边界了,那么就将另一指针还未遍历到的数依次放入到原有vector中排好序的元素的后面。

思路二: 双指针法

我们可以使用两个指针分别指向位置 0 和 n−1,每次比较两个指针对应的数,选择较大的那个逆序放入答案并移动指针。这种方法无需处理某一指针移动至边界的情况,读者可以仔细思考其精髓所在。

原作者:力扣官方题解
链接:https://leetcode.cn/problems/backspace-string-compare/

3.写出代码

思路一的代码:

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int length = nums.size();int poIndex = -1;//找到第一个不是负数的下标for (int i = 0; i < length; i++) {if (nums[i] >= 0) {poIndex = i;break;}}//找到最后一个负数的下标int neIndex;if (poIndex == -1) {neIndex = nums.size()-1;}else {neIndex = poIndex - 1;}//将这组数进行平方操作,并放到一个新创建的vector中vector<int> Temp;for (int i = 0; i < length; i++) {Temp.push_back(nums[i] * nums[i]);}//从中间往两边进行比较,然后依次往原有vector中放入排序好的元素int i = 0;while ((poIndex <=( nums.size() - 1)) && neIndex>=0) {if (Temp[poIndex] > Temp[neIndex]) {nums[i++] = Temp[neIndex--];}else {nums[i++] = Temp[poIndex++];}}while (poIndex <= nums.size() - 1) {nums[i++] = Temp[poIndex++];}while (neIndex >= 0) {nums[i++] = Temp[neIndex--];}return nums;}
};

思路二的代码:

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int n = nums.size();vector<int> ans(n);for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {if (nums[i] * nums[i] > nums[j] * nums[j]) {ans[pos] = nums[i] * nums[i];++i;}else {ans[pos] = nums[j] * nums[j];--j;}--pos;}return ans;}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/squares-of-a-sorted-array/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原作者:力扣官方题解
链接:https://leetcode.cn/problems/backspace-string-compare/

相关文章:

每日一题(LeetCode)----数组--有序数组的平方

每日一题(LeetCode)----数组–有序数组的平方 1.题目&#xff08;[977. 有序数组的平方](https://leetcode.cn/problems/sqrtx/)&#xff09; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。…...

SpringCloud微服务:Eureka

目录 提供者与消费者 服务调用关系 eureka的作用 在Eureka架构中&#xff0c;微服务角色有两类 Eureka服务 提供者与消费者 服务提供者:一次业务中&#xff0c;被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中&#xff0c;调用其它微服务的服务。(调…...

19.删除链表的倒数第N个结点(LeetCode)

想法一 先用tail指针找尾&#xff0c;计算出节点个数&#xff0c;再根据倒数第N个指定删除 想法二 根据进阶的要求&#xff0c;只能遍历一遍链表&#xff0c;那刚刚想法一就做不到 首先&#xff0c;我们要在一遍内找到倒数第N个节点&#xff0c;所以我们设置slow和fast两个指…...

PyTorch技术和深度学习——三、深度学习快速入门

文章目录 1.线性回归1&#xff09;介绍2&#xff09;加载自由泳冠军数据集3&#xff09;从0开始实现线性回归模型4&#xff09;使用自动求导训练线性回归模型5&#xff09;使用优化器训练线性回归模型 2.使用torch.nn模块构建线性回归模型1&#xff09;使用torch.nn.Linear训练…...

360导航恶意修改浏览器启动页!我的chrome和IE均中招,如何解决?

0&#xff0c;关闭360等“安全”软件 1&#xff0c;按下组合键winR 2&#xff0c;输入regedit&#xff0c;回车 3&#xff0c;按下组合键ctrlF 4&#xff0c;输入http://hao.360.cn&#xff0c;查找下一个 5&#xff0c;查到一个注册表键值就删一个&#xff0c;一个不放过…...

RabbitMQ的高级特性

目录 数据导入 MQ的常见问题 消息可靠性问题 生产者确认机制 SpringAMQP实现生产者确认 消息持久化 消费者消息确认 失败重试机制 消费者失败消息处理策略 死信交换机 TTL 延时队列 安装插件 SpringAMQP使用插件 消息堆积问题 惰性队列 MQ的高可用 普通集群 …...

Java自学第10课:JavaBean和servlet基础

目录 目录 1 JavaBean &#xff08;1&#xff09;概念 &#xff08;2&#xff09;分类 &#xff08;3&#xff09;使用 2 servlet &#xff08;1&#xff09;代码结构 &#xff08;2&#xff09;常用接口 &#xff08;3&#xff09;如何开发 1 新建servlet 2 配置 1…...

AR打卡小程序:构建智能办公的新可能

【内容摘要】 随着技术的飞速发展&#xff0c;智能办公已不再是遥不可及的梦想。在这其中&#xff0c;AR打卡小程序以其独特的技术优势&#xff0c;正逐步成为新型办公生态的重要组成部分。本文将探讨AR打卡小程序的设计理念、技术实现以及未来的应用前景&#xff0c;并尝试深…...

Python环境安装、Pycharm开发工具安装(IDE)

Python下载 Python官网 Python安装 Python安装成功 Pycharm集成开发工具下载&#xff08;IDE&#xff09; PC集成开发工具 Pycharm集成开发工具安装&#xff08;IDE&#xff09; 安装完成 添加环境变量&#xff08;前面勾选了Path不用配置&#xff09; &#xff08;1&…...

报时机器人的rasa shell执行流程分析

本文以报时机器人为载体&#xff0c;介绍了报时机器人的对话能力范围、配置文件功能和训练和运行命令&#xff0c;重点介绍了rasa shell命令启动后的程序执行过程。 一.报时机器人项目结构 1.对话能力范围 (1)能够识别欢迎语意图(greet)和拜拜意图(goodbye) (2)能够识别时间意…...

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2)

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2) 在文件OpenRA\mods\cnc\rules\ defaults.yaml里,可以看到这个配置,它的作用就是让这个单元可以被观察者查看到相关的信息。 UpdatesPlayerStatistics属性同样也是有两个类组成,一个叫做信息类UpdatesPlay…...

Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能

随着微服务的兴起&#xff0c;API网关越来越常见。API网关是连接应用程序和用户之间的桥梁&#xff0c;就像一个交通指挥员&#xff0c;负责处理所有进出应用的数据和请求&#xff0c;确保安全、高效、有序地流通。 今天给大家推荐一个.NET开源API网关。 01 项目简介 Ocelot…...

wsl [Ubuntu20.04.6] 安装 Hadoop

文章目录 1.安装WSL2.安装Java安装Hadoop3.3配置文件1.修改hadoop-env.sh2.修改core-site.xml3.修改hdfs-site.xml ssh启动 1.安装WSL 重启电脑 管理员打开powershell PS C:\windows\system32> wsl --list --online PS C:\windows\system32> wsl --install -d Ubuntu-2…...

2023华为ict网络赛道初赛(部分)试题

2023华为ict网络赛道初赛&#xff08;部分&#xff09;试题 10.在网络运维中&#xff0c;Telnet是用于连接远程设备的协议之一&#xff0c;那么以下哪一个设备不支持通过Telnet协议远程连接&#xff1f; PCACAPAR 12.openFlow交换机基于流表转发报文&#xff0c;每个流表项由…...

rabbitMq虚拟主机概念

虚拟主机是RabbitMQ中的一种逻辑隔离机制&#xff0c;用于将消息队列、交换机以及其他相关资源进行隔离。 在RabbitMQ中&#xff0c;交换机&#xff08;Exchange&#xff09;用于接收生产者发送的消息&#xff0c;并根据特定的路由规则将消息分发到相应的队列中。而虚拟主机则…...

2-CentOS7.9下安装docker

默认情况下,CentOS7.9下有两种方法可以安装docker,分别是在线安装docker和离线安装docker(伪离线,最后还是需要网络支持) 1.环境信息 HostNameIPAddressOS VersionDocker VersionNotecentos79172.20.10.12CentOS Linux release 7.9.2009 (Core)Docker version 23.0.6, buil…...

【已验证-直接用】微信小程序wx.request请求服务器json数据并渲染到页面

微信小程序的数据总不能写死吧&#xff0c;肯定是要结合数据库来做数据更新&#xff0c;而小程序数据主要是json数据格式&#xff0c;所以我们可以利用php操作数据库&#xff0c;把数据以json格式数据输出即可。 现在给大家讲一下微信小程序的wx.request请求服务器获取数据的用…...

如何提高小红书笔记的互动率

相信有很多新手在运营小红书的时候&#xff0c;可能都会遇到过以下这样的情况&#xff1a; 笔记点赞、收藏数据明明还可以&#xff0c;但评论区却没有人留言&#xff1f;为何大家只给点赞、收藏&#xff0c;却不关注账号&#xff1f; 其实&#xff0c;这背后有很多运营技巧&a…...

RabbitMQ 系列教程

一、RabbitMQ 部署及配置详解(集群部署) 二、RabbitMQ 部署及配置详解 (单机) 三、RabbitMQ 详解及实例&#xff08;含错误信息处理&#xff09; 四、RabbitMq死信队列及其处理方案 五、RabbitMQ Java开发教程—官方原版 六、RabbitMQ Java开发教程&#xff08;二&#x…...

无感刷新token

无感刷新 无感刷新Token技术是一种用于实现持久登录体验的关键技术&#xff0c;它通过在用户登录后自动刷新Token&#xff0c;以延长用户的登录状态&#xff0c;避免频繁要求用户重新登录。 实现 使用access_token&#xff08;短效token&#xff09;和refresh_token&#xf…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...