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

977. 有序数组的平方

时间:2024-10-29 20:01:54浏览次数:5  
标签:977 平方 nums int while vector 报错 result 数组

题目

看了卡哥的讲解视频后,写了如下代码:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> result;
        int k = nums.size() - 1;
        int i = 0, j = k;
        while (i <= j)
        {
            if (nums[i] * nums[i] <= nums[j] * nums[j])
            {
                result[k--] = nums[j] * nums[j];
                j -- ;
            }
            else
            {
                result[k -- ] = nums[i] * nums[i];
                i ++ ;
            }
        }

        return result;
    }
};

结果报错:

img

感觉是vector<int> result;这句有问题,这个语句是默认初始化vector对象,从而创建了一个指定类型的空vector,所以自然后面代码的用到的result[k--]会报错

然后改成这样就不报错了:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int k = nums.size() - 1;
        vector<int> result(nums.size(), 0);
        int i = 0, j = k;
        while (i <= j)
        {
            if (nums[i] * nums[i] <= nums[j] * nums[j])
            {
                result[k--] = nums[j] * nums[j];
                j -- ;
            }
            else
            {
                result[k -- ] = nums[i] * nums[i];
                i ++ ;
            }
        }

        return result;
    }
};

补充:

为什么是while(i<=j)而不是while(i<j)

因为当i == j时的那个点我们也要考虑,将其加到result中。

标签:977,平方,nums,int,while,vector,报错,result,数组
From: https://www.cnblogs.com/hisun9/p/18514296

相关文章

  • 复杂度分析,数据结构的数组与链表
    复杂度分析,数据结构的数组与链表参考书籍:Hello算法目录复杂度分析,数据结构的数组与链表复杂度分析时间复杂度空间复杂度数据结构数组与链表数组链表列表复杂度分析复杂度分析是用来判断一个算法效率的手段,执行时所需的时间和空间资源则是正好对应时间和空间复杂度。考虑到执......
  • [USACO1.2] 回文平方数 Palindromic Squares 题目解析
    洛谷P1206[USACO1.2]回文平方数PalindromicSquares题目解析题目描述回文数是指从左向右念和从右向左念都一样的数。如123211232112321就是一个典型的回文数。给......
  • 560. 和为 K 的子数组(中)
    目录题目法一、暴力枚举法二、前缀和+哈希表优化题目给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2法一......
  • c语言-数组队列-学习笔记
    数组队列#include<stdio.h>#include<stdlib.h>/*数组顺序队列*/typedefstructSqQueue{ intdata[10]; intfront; intrear;}SqQueue;voidInitQueue(SqQueue*Q){ Q->front=Q->rear=0;}voidEnQueue(SqQueue*Q,inta){ Q->data[Q->rear......
  • NumPy掩码数组(Masked Arrays)教程
    简介在处理数据时,我们经常会遇到缺失或无效的数据条目。如果想在不删除这些数据的情况下跳过或标记它们,可能需要使用条件语句或过滤数据。NumPy的numpy.ma模块提供了掩码数组(maskedarrays)功能,可以更方便地处理这种情况。掩码数组是标准NumPyndarray和掩码(mask)的......
  • 《Kadane‘s Algorithm专题:最大和连续子数组》
    ......
  • 209. 长度最小的子数组
    给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。示例1:输入:target=7,nums=[2,3,1,2,4,3]输出:2解释:子数组......
  • Go入门指南-7.6字符串、数组和切片的应用
    7.6.1从字符串生成字节切片假设s是一个字符串(本质上是一个字节数组),那么就可以直接通过c:=[]byte(s)来获取一个字节数组的切片c。另外,您还可以通过copy函数来达到相同的目的:copy(dst[]byte,srcstring)。同样的,还可以使用for-range来获得每个元素(Listing7.1......
  • react数组插入
    1、定义数组:const[items,setItems]=useState([]);2、普通js写法插入:setItems([...items,newItem])但是由于react是异步渲染的,这种更新方式可能会导致渲染不同步3、推荐更新方式:使用setState方法,并提供一个函数,该函数接收先前的状态,并返回一个更新后的状态。constaddIte......
  • JS分隔换行成数组+去重
    代码:varmDPS="";if(multipleDispatchID!=''){constarr=multipleDispatchID.split(/[(\r\n)\r\n]+/);constarr1=Unique(arr)for(vari=0;i<arr1.length;i++){......