设为首页 加入收藏

TOP

力扣 977.有序数组的平方(Java)
2023-07-26 08:16:14 】 浏览:32
Tags:力扣 977. 平方 Java

977. 有序数组的平方

题目描述

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

思路

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

代码

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;
            
    }
}

提交截图

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇洛谷oj题单【入门2】分支结构-入.. 下一篇LeetCode_单周赛_332

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目