当前位置: 首页 > news >正文

前缀和题目:一维数组的动态和

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法一
    • 思路和算法
    • 代码
    • 复杂度分析
  • 解法二
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:一维数组的动态和

出处:1480. 一维数组的动态和

难度

1 级

题目描述

要求

给定一个数组 nums \texttt{nums} nums。数组动态和的计算公式为: runningSum[i] = sum(nums[0] ... nums[i]) \texttt{runningSum[i] = sum(nums[0] ... nums[i])} runningSum[i] = sum(nums[0] ... nums[i])

返回 nums \texttt{nums} nums 的动态和。

示例

示例 1:

输入: nums = [1,2,3,4] \texttt{nums = [1,2,3,4]} nums = [1,2,3,4]
输出: [1,3,6,10] \texttt{[1,3,6,10]} [1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] \texttt{[1, 1+2, 1+2+3, 1+2+3+4]} [1, 1+2, 1+2+3, 1+2+3+4]

示例 2:

输入: nums = [1,1,1,1,1] \texttt{nums = [1,1,1,1,1]} nums = [1,1,1,1,1]
输出: [1,2,3,4,5] \texttt{[1,2,3,4,5]} [1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] \texttt{[1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]} [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]

示例 3:

输入: nums = [3,1,2,10,1] \texttt{nums = [3,1,2,10,1]} nums = [3,1,2,10,1]
输出: [3,4,6,16,17] \texttt{[3,4,6,16,17]} [3,4,6,16,17]

数据范围

  • 1 ≤ nums.length ≤ 1000 \texttt{1} \le \texttt{nums.length} \le \texttt{1000} 1nums.length1000
  • -10 6 ≤ nums[i] ≤ 10 6 \texttt{-10}^\texttt{6} \le \texttt{nums[i]} \le \texttt{10}^\texttt{6} -106nums[i]106

解法一

思路和算法

用数组 sums \textit{sums} sums 表示数组 nums \textit{nums} nums 的动态和。根据动态和的定义, sums [ i ] \textit{sums}[i] sums[i] 等于 nums \textit{nums} nums 的下标范围 [ 0 , i ] [0, i] [0,i] 中的所有元素之和,因此可以直接计算动态和。

代码

class Solution {public int[] runningSum(int[] nums) {int length = nums.length;int[] sums = new int[length];for (int i = 0; i < length; i++) {for (int j = 0; j <= i; j++) {sums[i] += nums[j];}}return sums;}
}

复杂度分析

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2),其中 n n n 是数组 nums \textit{nums} nums 的长度。计算每个元素的动态和的时间是 O ( n ) O(n) O(n),时间复杂度是 O ( n 2 ) O(n^2) O(n2)

  • 空间复杂度: O ( 1 ) O(1) O(1)。注意返回值不计入空间复杂度。

解法二

思路和算法

根据动态和的定义, sums [ 0 ] = nums [ 0 ] \textit{sums}[0] = \textit{nums}[0] sums[0]=nums[0]。当 i > 0 i > 0 i>0 时, sums [ i ] − sums [ i − 1 ] = nums [ i ] \textit{sums}[i] - \textit{sums}[i - 1] = \textit{nums}[i] sums[i]sums[i1]=nums[i],因此 sums [ i ] = sums [ i − 1 ] + nums [ i ] \textit{sums}[i] = \textit{sums}[i - 1] + \textit{nums}[i] sums[i]=sums[i1]+nums[i]。按照下标从小到大的顺序依次计算每个元素的动态和,则计算每个元素的动态和的时间是 O ( 1 ) O(1) O(1),总时间复杂度是 O ( n ) O(n) O(n)

代码

class Solution {public int[] runningSum(int[] nums) {int length = nums.length;int[] sums = new int[length];sums[0] = nums[0];for (int i = 1; i < length; i++) {sums[i] = sums[i - 1] + nums[i];}return sums;}
}

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是数组 nums \textit{nums} nums 的长度。计算每个元素的动态和的时间是 O ( 1 ) O(1) O(1),时间复杂度是 O ( n ) O(n) O(n)

  • 空间复杂度: O ( 1 ) O(1) O(1)。注意返回值不计入空间复杂度。


文章转载自:

http://hYryheMe.rhkmn.cn
http://CXq8QYd1.rhkmn.cn
http://U0hY3nEG.rhkmn.cn
http://d0NUQM8J.rhkmn.cn
http://p9ES4uaZ.rhkmn.cn
http://IgXFhJ6I.rhkmn.cn
http://Ms3n3uht.rhkmn.cn
http://k2O97b3g.rhkmn.cn
http://9BUhBmjX.rhkmn.cn
http://edeYclVu.rhkmn.cn
http://pYr1HW88.rhkmn.cn
http://q9Bx1uJX.rhkmn.cn
http://MjEthYTH.rhkmn.cn
http://8xQUAoO4.rhkmn.cn
http://xEGNGoPS.rhkmn.cn
http://lErNVt6i.rhkmn.cn
http://jZye7viT.rhkmn.cn
http://fi5jlsUE.rhkmn.cn
http://bGvOtTp0.rhkmn.cn
http://3wsoz3l1.rhkmn.cn
http://3uoPHB8M.rhkmn.cn
http://VZDYSaEi.rhkmn.cn
http://PIeUM7U1.rhkmn.cn
http://uDDeitOc.rhkmn.cn
http://II75bpFY.rhkmn.cn
http://G8P3McWg.rhkmn.cn
http://RImsa2rE.rhkmn.cn
http://YnG4tUZp.rhkmn.cn
http://Owfgq9qN.rhkmn.cn
http://ORsjADF6.rhkmn.cn
http://www.dtcms.com/a/227715.html

相关文章:

  • 九(4).存在指针的引用,不存在引用的指针
  • RNN循环网络:给AI装上“记忆“(superior哥AI系列第5期)
  • YOLOV7改进之融合深浅下采样模块(DSD Module)和轻量特征融合模块(LFI Module)
  • ubuntu 添加应用到启动菜单
  • CppCon 2014 学习:Hardening Your Code
  • 【Python 进阶2】抽象方法和实例调用方法
  • FDR的定位原理
  • Spring 5 响应式编程:构建高性能全栈应用的关键
  • PID项目-记事本不显示下划线
  • 《软件项目管理》第二章(项目准备与启动)期末周复习总结笔记
  • 九(2).参数类型为引用结构体类型
  • ROS机器人和NPU的往事和新知-250602
  • PCA(K-L变换)人脸识别(python实现)
  • 用Python开启游戏开发之旅
  • 抠图P图秀v7.8.19
  • Mysql水平分表(基于Mycat)及常用分片规则
  • 学到新的日志方法mp
  • C语言基础(10)【二维数组 字符数组 字符串相关操作】
  • CangjieMagic 智能体框架嵌入式系统实测:以树莓派 4B 为例
  • 探秘Transformer系列之(35)--- 大模型量化基础
  • Linux学习笔记:shell脚本篇(1)
  • 相机Camera日志分析之二十三:高通相机Camx 基于预览1帧的process_capture_request二级日志分析详解
  • 设计模式——迭代器设计模式(行为型)
  • SystemVerilog—Interface语法(一)
  • NX847NX855美光固态闪存NX862NX865
  • Spring AI 之检索增强生成(Retrieval Augmented Generation)
  • Python打卡训练营Day43
  • 系统思考:成长与投资不足
  • 浏览器网站禁止黏贴,但是要交作业怎么快速黏贴
  • Python趣学篇:用Pygame打造绚烂流星雨动画