首页 > 其他分享 >1480.一维数组的动态和

1480.一维数组的动态和

时间:2024-01-18 16:44:59浏览次数:22  
标签:一维 nums sum vector 1480 数组 preSum 动态

1.题目介绍

给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和。

示例 1:
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。

示例 2:
输入:nums = [1,1,1,1,1]
输出:[1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。

示例 3:
输入:nums = [3,1,2,10,1]
输出:[3,4,6,16,17]

2.题解

2.1 原地修改

思路

在原有数组的基础上进行修改

代码

这里一个稍微要注意的点是,由于preSum[0] = nums[0]; 所以实际开始是从i=1开始的!!!

class Solution {
public:
    vector<int> runningSum(vector<int>& nums) {
        int n = nums.size();
        for (int i = 1; i < n; i++){
            nums[i] = nums[i-1] + nums[i];
        }
        return nums;
    }
};

2.2 前缀和

思路

使用一个前缀和数组来维护preSum[i-1],而preSum[i] = preSum[i-1] + nums[i]

代码

class Solution {
public:
    vector<int> runningSum(vector<int>& nums) {
        vector<int> preSum;
        int sum = 0;
        for (auto num:nums){
            sum += num;
            preSum.push_back(sum);
        }
        return preSum;
    }
};

标签:一维,nums,sum,vector,1480,数组,preSum,动态
From: https://www.cnblogs.com/trmbh12/p/17972832

相关文章

  • 560.和为k的数组
    1.题目介绍给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1<=nums.length<=2*104-1000<=nums[i]<=......
  • PHP把数组按指定的个数分隔
    假设数组为array(‘1’,‘2’,‘3’,‘4’,‘5’,‘6’);想把它分割成四个,那么结果为array( ‘0’=>[‘1’,‘2’], ‘1’=>[‘3’,‘4’], ‘2’=>[‘5’], ‘3’=>[‘6’],);/****把数组按指定的个数分隔*@paramarray$array要分割的数组*@par......
  • 数组遍历的方法
    1、forEach()forEach() 方法对数组的每个元素执行一次给定的函数,不会改变原数组,没有返回值。数组中的每个值都会调用回调函数,回调函数有三个参数:currentValue:必需。当前元素。index:可选。当前元素的索引值。arr:可选。当前元素所属的数组对象。//forEach不会改......
  • python 在排序数组中查找元素的第一个和最后一个位置 多种解法
    二分查找:基于二分查找的算法可以在O(logn)的时间复杂度内解决该问题。具体实现方式是,先使用二分查找找到该元素的位置,然后向左和向右扩展,直到找到第一个和最后一个位置。代码如下:defsearchRange(nums,target):defbinarySearch(nums,target,lower):left,righ......
  • go--数组
    数组的定义数组是用来存储相同唯一类型的,一组已编号且长度固定的序列数组的特点固定长度:这意味着数组不可增长、不可缩减。想要扩展数组,只能创建新数组,将原数组的元素复制到新数组。内存连续:这意味可以在缓存中保留的时间更长,搜索速度更快,是一种非常高效的数据结构,同时还意味......
  • Java数组
    Java数组数组一、数组的声明和创建1、声明dataType[]arrayRefVar;//声明数组2、创建dataType[]arrayRefVar=newdataType[dataSize];//创建一个数组二、初始化及内存分析1、初始化//静态初始化:创建加赋值int[]a={1,2,3};Peo......
  • 将一个数组中的元素头尾两端对调
    #include<stdio.h>voidinplace_swap(int*x,int*y){printf("--------------\n");printf("x=%d,y=%d\n",*x,*y);*y=*x^*y;printf("x=%d,y=%d\n",*x,*y);*x=*x^*y;printf(&......
  • C99标准前后对于二维数组的动态声明问题
    html:toc:true写在前面:出于作者不了解C99以前标准中对二维数组的动态声明而导致的一场考场事故,作者写下这篇文章,,以便其他同学在遇到类似问题时不要犯同样的错误,同时作为对自己的警醒.本文主要是关于对于二维数组动态声明问题在不同C标准下方法的探讨,将给出一个简......
  • 数组Array
    slice用于截取数组的一部分,不修改原数组。letmyArray=[1,2,3,4,5];//使用slice创建一个新的数组,包含索引1到索引3的元素(不包括索引3)letnewArray=myArray.slice(1,3);console.log(newArray);//输出新的数组,这里是[2,3]console.log(myArray);//输出原始数......
  • C# 将字节数组,数值和十六进制字符串相互转换
    byte[]bs=newbyte[32];Randomrandom=newRandom();random.NextBytes(bs);//给字节数组填充随字节stringhex=BitConverter.ToString(bs);//将字节数组转成十六进制字符串,默认-分割Console.WriteLi......