leetcode_977. 有序数组的平方_java

977. 有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/

1.题目

给你一个按 非递减顺序 排序的整数数组 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.题解

    题解1:

    先把所有的元素平方,然后再使用选择排序算法进行排序(用其他排序算法也可以)。

    class Solution {public int[] sortedSquares(int[] nums) {int i,j,min,temp;//1、把所有的元素平方for(i=0; i<nums.length; i++) {nums[i] = nums[i] * nums[i];}//选择排序算法,使元素从小到大排序for(i=0;i<nums.length-1;i++){min=i; // 记录最小值的位置,第一个元素默认最小for(j=i+1;j<nums.length;j++)if(nums[j]<nums[min]) // 找到目前最小值min=j;  // 记录最小值的位置if(min!=i) { // 交换两个变量temp=nums[min];nums[min]=nums[i];nums[i]=temp;}}return nums;        }
    }

    注:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

    题解2:

    使用Arrays.sort()函数。

    class Solution {public int[] sortedSquares(int[] nums) {for(int i=0; i<nums.length; i++) {nums[i] = nums[i] * nums[i];}Arrays.sort(nums);return nums;        }
    }

    题解3:

    使用双指针。

    class Solution {public int[] sortedSquares(int[] nums) {// 创建一个与输入数组相同长度的数组来存储结果int[] result = new int[nums.length];// 初始化变量 i 为数组的起始位置,j 为数组的结束位置,k 为结果数组的最后一个位置int i, j, k = nums.length - 1;// 使用双指针法进行比较,i 从数组开头,j 从数组结尾,k 从结果数组的末尾开始填充for(i = 0, j = nums.length - 1; i <= j; ) {// 比较当前 i 和 j 位置的平方值,较大的平方值放到 result[k] 中if(nums[i] * nums[i] > nums[j] * nums[j]) {// 将 i 位置的平方放入 result[k] 中result[k] = nums[i] * nums[i];// k 递减,准备填充下一个最大值k--;// i 向右移动,继续向右处理i++;} else {// 将 j 位置的平方放入 result[k] 中result[k] = nums[j] * nums[j];// k 递减,准备填充下一个最大值k--;// j 向左移动,继续向左处理j--;}}// 返回结果数组,它已经按升序排列了return result;}
    }
    

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

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

    相关文章

    Nginx—nginx.conf 配置结构详解

    一、nginx.conf 配置结构 函数 说明 main 全局配置 event 配置工作模式以及连接数 http http模块相关配置 server 虚拟主机配置&#xff0c;可以有多个 location 路由规则&#xff0c;表达式 upstream 集群、内网服务器&#xff08;负载均衡也在这里边配&#xff…

    斐波那契数列----C语言

    关于斐波那契 已知&#xff1a; 问题背景&#xff1a;一对兔子从第3个月开始每月生一对新兔子&#xff0c;新兔子同样在第3个月开始繁殖。 关键观察&#xff1a; 第1个月&#xff1a;1对&#xff08;初始兔子&#xff09;。 第2个月&#xff1a;1对&#xff08;未成熟&#…

    vulhub靶场—— Tomcat8

    目录 一、漏洞描述 二、靶场搭建 三、漏洞复现 1、弱密码 2、文件上传 一、漏洞描述 环境描述&#xff1a; Tomcat 支持后台部署 war 文件&#xff0c;可以直接将 webshell 部署到 web 目录下。tomcat 默认的管理页面 manager 使用 basic 认证用户名和密码登录&#xff0…

    使用 Spring AI Aliabab Module RAG 构建 Web Search 应用

    使用 Spring AI Alibaba 构建大模型联网搜索应用 Spring AI 实现了模块化 RAG 架构&#xff0c;架构的灵感来自于论文“模块化 RAG&#xff1a;将 RAG 系统转变为类似乐高的可重构框架”中详述的模块化概念。 Spring AI 模块化 RAG 体系 总体上分为以下几个步骤&#xff1a; …

    一些练习 C 语言的小游戏

    一些练习 C 语言的小游戏 — 1. 猜数字游戏 描述&#xff1a;程序随机生成一个数字&#xff0c;玩家需要猜测这个数字&#xff0c;并根据提示&#xff08;太高或太低&#xff09;调整猜测&#xff0c;直到猜中为止。 功能点&#xff1a; 随机数生成 (rand() 函数)。循环和…

    关于中文编程的一些思考

    随着信息化与数字化的发展&#xff0c;工业4.0时代亦将徐徐到来。当计算机的普及程度越来越高&#xff0c;数据的产生、传输、处理等变得越来越快、越来越大量的时候&#xff0c;人们想要自动化办公的愿望也越来越强烈&#xff0c;希望能将自身从耗费脑力但是重复繁琐的工作中解…

    golang 日志log与logrus

    目录 一、Go 标准库 log 详解 1. 功能特点 2. 常用函数 3. 示例代码 4. 优势和局限 二、第三方库 logrus 详解 1. 功能特点 2. 核心功能 3. 示例代码 4. 优势和扩展性 三、总结 1. 何时选择 log&#xff1f; 2. 何时选择 logrus&#xff1f; 3. 对比总结 一、Go 标…

    消费品行业创新创业中品类创新与数字化工具的融合:以开源 AI 智能客服、AI 智能名片及 S2B2C 商城小程序为例

    摘要&#xff1a; 本文聚焦于消费品行业的创新与创业&#xff0c;深入探讨“选择大于努力”这一观点&#xff0c;强调品类选择在品牌发展中的关键作用。同时&#xff0c;详细分析了品类创新对于新消费品牌崛起以及传统品牌转型的重要意义。在此基础上&#xff0c;引入开源 AI 智…

    Razer macOS v0.4.10快速安装

    链接点这里下载最新的 .dmg 文件。将下载的 .dmg 映像文件拖入 应用程序 文件夹中。若首次打开时出现安全警告【什么扔到废纸篓】&#xff0c;这时候点击 Mac 的“系统偏好设置”-> “安全性与隐私”-> “通用”&#xff0c;然后点击底部的 “打开”。【或者仍然打开】 对…

    Flask项目部署:Flask + uWSGI + Nginx

    目录 1,网络架构 2,环境安装 2.1,安装yum:Shell软件包管理器 2.2 安装python 2.3 安装uWSGI 2.4 安装Flask 3,上传工程包到服务器,打包Flask项目 4,创建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注释详解 5,启动服务 6,安装nginx 7,nginx配置 8,…

    [FPGA基础学习]实现流水灯与按键暂停

    FPGA实现LED流水灯 1.vscode的安装和使用 vscode下载 Visual Studio Code - Code Editing. Redefined vscode插件&#xff08;Verilog-HDL/SystemVerilog&#xff09;下载 quartus绑定vscode 2.用6个LED完成周期为1秒的跑马灯效果 流水灯模块设计 时钟输入 DE2-115开发板…

    【TensorRT】TensorRT从安装到推理——Python 环境下 MobileNetV4 三分类任务

    我想开发一个基于深度学习的分类小软件&#xff0c;逐渐了解到了TensorRT在模型推理速度上的优势&#xff0c;经过一下午资料的查找实现了将onnx模型转为TensorRT格式模型的推理及测试过程。将实现过程记录下来方便日后查看。 本文实验设备是MX350显卡 2G显存 一 、安装Tenso…

    1.两数之和(Java)

    1. 题目描述 LeetCode 1. 两数之和&#xff08;Two Sum&#xff09; 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那两个整数&#xff0c;并返回它们的索引。 示例 1&#xff1a; 输入&#xff1a;nums [2,7,11,15], target 9 …

    《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》

    《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》 引言:从零到分析高手 数据是当代社会最宝贵的资源,而数据分析技能是现代职业人不可或缺的一部分。在数据科学的领域中,Python 已成为当之无愧的“首选语言”,其强大的生态系统和简洁的语法让人如虎添…

    将树莓派5当做Ollama服务器,C#调用generate的API的示例

    其实完全没这个必要&#xff0c;性能用脚后跟想都会很差。但基于上一篇文章的成果&#xff0c;来都来了就先简单试试吧。 先来看看这个拼夕夕上五百多块钱能达到的效果&#xff1a; 只要对速度没要求&#xff0c;那感觉就还行。 Ollama默认只在本地回环&#xff08;127.0.0…

    python基础学习二(列表及字典的使用)

    文章目录 列表列表的创建获取列表中的多个元素判断列表中元素是否存在列表元素的添加操作列表元素的删除操作列表元素的修改列表的排序列表生成式 字典字典的创建字典的常规操作字典的常用操作字典的视图操作字典元素的遍历字典的特点字典的生成式 列表 一个对象由id&#xff0…

    Android设计模式之代理模式

    一、定义&#xff1a; 为其他对象提供一种代理以控制对这个对象的访问。 二、角色组成&#xff1a; Subject抽象主题&#xff1a;声明真是主题与代理的共同接口方法&#xff0c;可以是一个抽象类或接口。 RealSubject真实主题&#xff1a;定义了代理表示的真实对象&#xff0c…

    国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)

    文章目录 证书推荐1. 六西格玛 (6 Sigma)2. 亚马逊网络服务 (AWS)3. 美国生产与库存控制学会 (APICS)4. 内部审计师协会 (IIA)5. 微软 (Microsoft)6. 甲骨文 (Oracle)7. 项目管理协会 (PMI)8. 红帽 (Red Hat) 证书推荐 1. 六西格玛 (6 Sigma) 介绍&#xff1a;六西格玛是一种…

    用mkdocs写文档#自动更新github-page

    https://wuyisheng.github.io/blog 背景是上一篇博客 使用mkdocs&#xff0c;最后提及可以部署github page。这里说明下怎么自动部署。 当然&#xff0c;这篇博客主要的目的还是提供下github page的链接 &#xff1a;&#xff09; 我是这样做的&#xff1a; step 1: pip3 i…

    QT五 文件系统,QFile,QfileInfo

    总览 QIODevice&#xff1a;所有 I/O 设备类的父类&#xff0c;提供了字节块读写的通用操作以及基本接口&#xff1b;QFileDevice&#xff1a;Qt5新增加的类&#xff0c;提供了有关文件操作的通用实现。QFlie&#xff1a;访问本地文件或者嵌入资源&#xff1b;QTemporaryFile&a…