首页IT科技java数组是否有序(有序数组的平方-力扣(Java))

java数组是否有序(有序数组的平方-力扣(Java))

时间2025-05-03 17:24:15分类IT科技浏览3303
导读:977. 有序数组的平方 题目描述 给你一个按...

977. 有序数组的平方

题目描述

给你一个按 非递减顺序 排序的整数数组 nums            ,返回 每个数字的平方 组成的新数组                ,要求也按 非递减顺序 排序            。

思路

我采用的是双指针进行解答 首先应明确      ,数组是有序数组         ,那么在考虑复数的情况下                ,平方后的最小值一定在数组的两端        ,那么便可以设置左指针left与右指针right      ,并设置数组result对平方后排序的结果进行存储                 ,也应当设置temp作为中间变量方便数组result的存储 对于循环条件left <= right便是要进行完全数组的遍历 在循环中          ,我们应当对最左端与最右端数值的平方大小进行判断   ,取较大的一方存入数组result中                  ,这里需要注意的是             ,由于result数组我们是按照递增数组进行排序的,所以temp = result.legnth -1               ,在存入一个数值后                ,进行temp--操作   ,然后按照存入的是最右端还是最左端进行相应操作            ,以便进行下一个数据的判断                。 若想无脑做的话可以直接将每个数据的平方求出                ,再将数组进行排序      ,这里并未采用

代码

class Solution { public int[] sortedSquares(int[] nums) { int left = 0; int right = nums.length - 1; int[] result = new int[nums.length]; int temp = result.length - 1; while(left <= right){ if(nums[left] * nums[left] > nums[right] * nums[right]){ result[temp] = nums[left] * nums[left]; temp--; left++; } else{ result[temp] = nums[right] * nums[right]; temp--; right--; } } return result; } }

提交截图

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
实现ls -l功能(day02-实现01) 枣庄要闻(枣庄要闻大众网)