LeetCode977有序数组的平方两种方法实现(java实现)

news2024/12/28 19:27:16

今天来分享的是LeetCode977有序数组的平方的实现方法,我们先来看下题目:
在这里插入图片描述
提示:我们在读题的时候一定要仔细,注意题目给定的条件是有序数组。
方法1:我们在看到题目的第一时间是无非是将数组每个元素进行平方,对平方之后的数组排个序即可,那么第一种方法的实现如下:

class Solution {
    public int[] sortedSquares(int[] nums) {

         int len=nums.length;
            int i =0;
            int j=0;
            int k=0;
            for (i=0;i<len;i++){
                nums[i]=nums[i]*nums[i];
            }
          for (j=0;j<len-1;j++){
              for (k=0;k<len-j-1;k++){
                  if(nums[k]>nums[k+1]){
                      int t=nums[k];
                      nums[k]=nums[k+1];
                      nums[k+1]=t;
                  }
              }

          }


        return nums;
    }

    }

上面的具体排序方法我用的是冒泡排序,那么利用该暴力求解法是可以通过Leetcode测试的,但是时间复杂度较高,时间复杂度为O(n*logn)
方法二:双指针方法,我们今天主要介绍的方法为方法二
双指针的思路如下,我们注意题目是非递减数组,那么这个数组的平方最大值一定在数组的两侧,而非是中间,for example[-1,0,3,5],这个数组平方最大值为25,因此我们根据这个特性,就可以定义两个指针left,right,一个指向数组左边,一个指向数组右边,如果发现nums[left]>nums[right],此时开辟一个新的和原数组长度大小的数组,将nums[left]放到开辟的新数组的最后一个位置(因为题目要求我们要进行升序排序),并将left++,如果发现如果发现nums[left]<nums[right],将nums[left]放到开辟的新数组(这里我们要进行提示下,在开辟新的数组的时候切记不可将int arr[]=nums,这样arr和nums会指向同一片地址空间)中,将right–。这样就可以完成对数组平方的排序了。那么具体代码实现如下:

class Solution {
    public int[] sortedSquares(int[] nums) {

      int i=0;
            int len=nums.length;
            int j=len-1;
            int k=len-1;
            int arr[]=new int[k+1];
            while (i<=j){
                if (nums[i]*nums[i]>nums[j]*nums[j]){
                    arr[k]=(nums[i]*nums[i]);
                    i++;
                    k--;
                }else {
                    arr[k]=(nums[j]*nums[j]);
                    j--;
                    k--;
                }
            }
            return arr;
    }

    }

那么本次题目的思路及代码分享就到此结束了。如果觉得有任何问题欢迎提问。博主看到会进行回复,如果觉得博主写的文章对你有帮助,希望可以右下角的小爱心❤帮点点。谢谢!

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

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

相关文章

防御升级!SMC2助力企业高效应对邮箱安全挑战

根据Coremail邮件安全人工智能实验室&#xff08;以下简称AI实验室&#xff09;的监测数据显示&#xff0c;2023年Q3全国企业级用户遭受无差别的暴力破解攻击次数虽相比2022年同期有所下降&#xff0c;但仍高达 24.2 亿次&#xff0c;且暴力破解攻击次数有明显回升趋势。 面对正…

关东升老师从小白到大牛系列丛书(由清华大学出版社出版)

助力技术成长&#xff0c;成就大牛之路 在这个科技日新月异的时代&#xff0c;掌握一门编程语言或专业技能已是必备&#xff0c;不再是奢侈。清华大学出版社出版的“从小白到大牛”的系列丛书&#xff0c;涵盖Python、Java、Kotlin、Android和SQL&#xff0c;助你快速在技术之…

Elasticsearch:相关性工作台 - BM25 及 ELSER 的相关性比较

我们知道 Elastics Learned Sparse EncoderR (ELSER) 可以被用来做语义搜索。它是一个 out-of-domain 的语义搜索模型。无需训练&#xff0c;我们就可以得到很好的相关性。有关 ELSER 的更多知识&#xff0c;请参考文章 “Elastic Learned Sparse Encoder 简介&#xff1a;Elas…

QuickLook 万能的 Windows 预览工具

QuickLook 是一款用于 Microsoft Windows 操作系统的轻量级文件预览工具。它提供了类似于 Mac OS X 上的"快速查看"功能的体验&#xff0c;允许用户在不打开文件的情况下快速预览文件内容。我们只需要按下键盘空格键就可以预览文件&#xff0c;当预览的是 docx 等文件…

安装NLTK Data

文章目录 NLTK离线安装1. 获取安装包2. 放置nltk_data文件3. Demo4. 参考链接 关注公众号&#xff1a;『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我 nltk库是python语言为自然语言处理提供的一个功能强大&#xff0c;简单易用的函数库&a…

大疆第九届篮球联赛举办的记忆

首先感谢各位大哥支持&#xff0c;我们自己举办了2023 DJI第九届篮球运动比赛&#xff0c;恭喜各位参赛队伍&#xff0c;收获了荣誉、进行了运动锻炼与交流。 队长们合影留念&#xff1a; 从左往右队长依次介绍为&#xff1a;养生队-大凤、疆来队 - 乔丹 、十二人队 - 腾哥、 J…

Python自动化测试(unittest框架)

一、什么是框架 框架是由大佬开发或者专业的研发团队研发的技术骨架&#xff0c;框架是一个半成品&#xff0c;框架是对常用的功能&#xff0c;基础的代码进行封装的一个工具&#xff0c;这个工具对外提供了一些API&#xff0c;其他的开发者只需要调用框架的接口即可&#xff…

Python学习开发mock接口

#1.测试为什么要开发接口&#xff1f; 1)在别的接口没有开发好的时候, mock接口(模拟接口) 2)查看数据, 避免直接操作数据库 #2.开发接口的顺序 1)安装flask flask是一个轻量级开发框架 pip install flask 2)开发一个接口 开发步骤&#xff1a; 1.实例化一个服务server:f…

访谈型软文写作方式,媒介盒子告诉你

访谈型软文一般用于维护企业形象&#xff0c;分享品牌故事。但是许多企业在写访谈型软文时经常容易跑偏或者写来写去没有逻辑&#xff0c;今天媒介盒子就来和大家分享访谈型软文的写作方式&#xff0c;看完这四点&#xff0c;小白也能写好访谈型软文&#xff01; 一、 访谈对象…

03鸿蒙ArkTS应用开发及ArkTS语言学习

目录 1、概述1.1、模型到底是什么&#xff1f;1.2、Stage和FA模型最大的区别到底是什么&#xff1f;1.3、ArkTs和JS开发语言该怎么选呢&#xff1f; 2、一张图认识ArkTS应用的工程目录3、ArkTS开发语言3.1、ArkTS语言从哪里来&#xff1f;3.2、ArkTS基本语法 4、开发一个登录界…

SCI期刊投稿的不同状态

投稿过程中的不同状态代表了稿件的不同处理阶段 1. Submitted to Journal 已提交至期刊 刚投稿成功&#xff0c;邮箱会收到确认信件&#xff0c;等待编辑处理稿件&#xff0c;这个状态自然形成&#xff0c;无需作者处理。 2. Awaiting admin processing 等待管理员处理 文…

面对同行恶意排挤,佳卫苗灭杀病毒HPV向市场发出灵魂五问

近期&#xff0c;抗HPV市场因为一款名叫“佳卫苗灭杀病毒HPV”的产品诞生而风起云涌。上市之初&#xff0c;产品方便表示&#xff0c;佳卫苗灭杀病毒HPV的诞生&#xff0c;不仅是为了造福患者&#xff0c;更是为了优化市场、刺激行业升级&#xff0c;以“机理更科学、材料更先进…

Windows进程机制

进程 进程要做任何事情&#xff0c;必须让一个线程在它的上下文运行。该线程负责执行进程地址空间包含的代码。每个进程至少要有一个线程来执行进程地址空间包含的代码。当系统创建一个进程的时候&#xff0c;会自动为进程创建第一个线程&#xff0c;这称为主线程&#xff08;…

MyBatis--07--启动过程分析、SqlSession安全问题、拦截器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 谈谈MyBatis的启动过程具体的操作过程如下&#xff1a;实现测试类,并测试SqlSessionFactorySqlSession SqlSession有数据安全问题?在MyBatis中&#xff0c;SqlSess…

可观测性是什么?新手入门指南!

如果您之前对可观测性重要性&#xff0c;益处&#xff0c;以及组成不甚了解&#xff0c;本文是一个合适的指南手册。 什么是可观测性&#xff1f; 可观测性被定义为根据系统产生的输出数据&#xff08;如日志&#xff0c;指标和链路追踪&#xff09;来衡量当前系统运行状态的…

Python虚拟环境指南:告别依赖地狱

一、背景 在SAAS&#xff08;软件即服务&#xff09;平台中&#xff0c;用户使用自行定制的Python脚本已经成为司空见惯的做法&#xff0c;然而&#xff0c;由于不同用户对Python三方库的需求各不相同&#xff0c;而底层服务器一般只安装了一个Python版本。举例来说&#xff0…

【STM32单片机】旋转太空人设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使IIC OLED液晶等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示动画界面。 二、软件设计 /* 作者&#xff1a;嗨小易&#xff08;QQ&#x…

Stable Diffusion 系列教程 - 3 模型下载和LORA模型的小白入门

首先&#xff0c;一个比较广泛的模型下载地址为&#xff1a;Civitai Models | Discover Free Stable Diffusion Models 黄框是一些过滤器&#xff0c;比如checkpoints可以理解为比如把1.5版本的SD模型拷贝一份后交叉识别新的画风或场景后得到的模型&#xff0c;可以单独拿出来使…

[CC13X0] XDS100V3连接报错:Make sure your device is unlocked.

用XDS100V3给CC1310下载程序时&#xff0c;发现如下连接错误&#xff1a; An error occurred while hard opening the controller. -----[An error has occurred and this utility has aborted]-------------------- This error is generated by TIs USCIF driver or utilities…

mysql 数据库 关于库的基本操作

库的操作 如果想到 mysql 客户端当中数据 系统当中的命令的话&#xff0c;直接输入的话&#xff0c;会被认为是 mysql 当中的命令。 所以&#xff0c;在mysql 当中执行系统当中的命令的话&#xff0c;要在系统命令之前带上 ststem &#xff0c;表示系统命令&#xff1a; 但是…