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

有序数组的平方

时间:2024-10-09 21:22:11浏览次数:7  
标签:平方 数组 nums int 最大值 有序 left 指针

实际上需要考虑的是两个数组的按序合并,思路还是双指针法,很容易想到合并后数组的最大值只会在最左边或者最右边,而去掉这个元素后也是一样的操作。因此左指针从负数的最大值即最左边开始,右指针从正数的最大值即最右边开始,比较后更新位置。
这里需要想清楚的是结束条件,实际上更新位置后剩下的元素都是未并入的,因此最后左右指针一定是会相遇的,也即只剩下一个元素。因此结束条件是左右指针位置相同时。
代码如下:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int n = nums.size()-1;
        vector<int>result(nums.size(),0);
        int left = 0;
        int right = n;
         for(int left = 0, right = n; left <= right; ){
            if(nums[left] * nums[left] < nums[right] * nums[right]){
                result[n--] = nums[right] * nums[right];
                right--;
            }
            else{
               result[n--] = nums[left] * nums[left];
                left++;
            }
         } 
       return result;
    }
};

标签:平方,数组,nums,int,最大值,有序,left,指针
From: https://www.cnblogs.com/gqzz/p/18455191

相关文章

  • java Gzip将json压缩成byte数组
    `importorg.apache.commons.lang3.StringUtils;importjava.io.*;importjava.nio.charset.StandardCharsets;importjava.util.Arrays;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream;publicclassTestController{publicsta......
  • java复制查询数组-cnblog
    java数组复制数组copyOf(待复制数组,复制后新数组的长度)如果复制后数组的长度,长于原来数组,多出来的元素会被补0,如果新数组元素少会从第一个元素,取到指定元素长度packagenb;importjava.util.Arrays;publicclasscopyOf_{publicstaticvoidmain(String[]......
  • 对UVM添加超时前的打印信息+AXI低功耗接口+process的await语句+对象当成参数+sv的单例
    对UVM添加超时前的打印信息首先获取到UVM的超时值,然后手动设定\$time的比较和while延时循环,当超出时间后,打印特殊的debug信息。$time<set_time,则进行循环。uvm_cmdline_processorclp;clp=uvm_cmdline_processor::get_inst();stringtimeout_settings[$];stringtimeout......
  • JavaScript数组合并方法(concat()函数)
    在JavaScript中,concat方法用于连接两个或多个数组,并返回一个新数组。这不会改变现有的数组,而是返回一个包含了连接元素的新数组。解法1:基本的concat使用方法letarray1=[1,2,3];letarray2=[4,5];letarray3=array1.concat(array2);console.log(array3);//输......
  • C++——将一个数组中的数循环左移两位,例如:数组中原来的数为:1 2 3 4 5,移动后变成 3 4 5
    没注释的源代码#include<iostream>usingnamespacestd;intmain(){   inta,b[100];   cout<<"请输入数组个数:";   cin>>a;   cout<<"请输入"<<a<<"个数组:";   for(inti=0;i<a;i++)   {       cin&......
  • 程序设计基础I-实验5 一维数组
    7-1sdut-C语言实验-众数众数是指在一组数据中,出现次数最多的数。例如:1,1,3中出现次数最多的数为1,则众数为1。给定一组数,你能求出众数吗?输入格式:输入数据有多组(数据组数不超过50),到EOF结束。对于每组数据:第1行输入一个整数n(1<=n<=10000),表示数的个数。......
  • leetcode 刷题day37动态规划Part06背包问题( 322. 零钱兑换、279.完全平方数、139.单词
    322.零钱兑换思路:每种硬币的数量是无限的,是典型的完全背包问题。但是题目要求等于目标值的最小硬币个数。所以这里需要对动规五部曲进行分析。动规五部曲:1、确定dp数组以及下标的含义dp[j]:凑足总额为j所需钱币的最少个数为dp[j]2、确定递推公式凑足总额为j-coins[i......
  • 揭秘SQL执行顺序:从混乱到有序的数据之旅
    在数据分析的世界里,SQL(StructuredQueryLanguage)是我们与数据库对话的语言。无论你是在处理销售数据、用户行为分析,还是进行复杂的数据挖掘,理解SQL的执行顺序无疑是提升查询效率和准确性的关键。今天,我们就来揭开SQL执行顺序的神秘面纱,带你从混乱到有序,开启一段数据之旅。1.......
  • Unity 二维数组序列化
    unity中,二维以上的数量是不支持序列化的,如:usingSystem.Collections.Generic;usingUnityEngine;publicclassTestArray:MonoBehaviour{//不支持序列化(在Inspector面板无法显示)publicRect[][]rect2Ds;//不支持序列化(在Inspector面板无法显示)//pub......
  • Day 24 贪心算法part02| LeetCode 122.买卖股票的最佳时机II,55.跳跃游戏,45.跳跃游戏II
    122.买卖股票的最佳时机II局部最优:每天的正利润全局最优:每天的正利润之和121.买卖股票的最佳时机classSolution{publicintmaxProfit(int[]prices){intres=0;for(inti=1;i<prices.length;i++){i......