java数组是否有序(有序数组的平方-力扣(Java))
导读: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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!