首页 > 其他分享 >977. 有序数组的平方

977. 有序数组的平方

时间:2022-11-06 20:23:11浏览次数:73  
标签:977 平方 right nums int result 数组 left

977. 有序数组的平方

给你一个按 非递减顺序 排序的整数数组 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) 的算法解决本问题

解法一:暴力法

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

解法二:双指针法

 

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

 

标签:977,平方,right,nums,int,result,数组,left
From: https://www.cnblogs.com/fulaien/p/16863642.html

相关文章

  • 实验4 类与数组、指针
    实验5:#include<iostream>usingstd::cout;usingstd::endl;usingstd::cin;classvectorInt{public:vectorInt(intn);vectorInt(intn,intm);~......
  • [代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE
    文章目录​​写在前面​​分析​​​​脚本​​写在前面本次强网杯决赛的一个题,还是蛮有意思的,代码可以在github拿到​​​https://github.com/rainrocka/xinhu​​分析首......
  • 在有序数组中插入一个数后仍然有序
    #include<stdio.h>intmain(){ inta[7]={2,5,12,32,44,57}; intb=20; inti; intj; intlength; length=sizeof(a)/sizeof(int); printf("插......
  • 寻找两个正序数组的中位数
    题目给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输......
  • 实验四 类与数组、指针
    task5:#pragmaonce#include<iostream>#include<cassert>#include<string>usingnamespacestd;classvectorInt{public:vectorInt(intn0);v......
  • Java基础----数组
    什么是数组数组就是一串数字,一下子可以定义多个值格式:数组类型 变量名称=变量值(可能不对具体看代码)平时总要inti=0.....有了数组可以直接int[]b=newint[10......
  • C/C++ 数组、指针与函数
    数组与指针数组名数组第一个元素的地址intar[10];int*p=ar;p==&ar[0];*p==ar[0];多维数组可看做一维数组,其每个元素也是一个数组intar[4][5];int(*......
  • 实验四 类与数组、指针
    实验任务五代码截图:  vectorInt.hpp:1#pragmaonce23#include<iostream>4#include<cassert>5usingnamespacestd;67classvectorInt8{9p......
  • [哈希]leetcode349. 两个数组的交集
    题目给定两个数组 nums1 和 nums2,返回它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。示例1:输入:nums1=[1,2,2,1],nums2......
  • Java学习笔记day4--数组复习
    packageday4_array;importjava.util.Arrays;importjava.util.Scanner;publicclassArrayExam{publicstaticvoidmain(String[]args){int[]arr......