LeetCode刷题笔记第1480题:一维数组的动态和

LeetCode刷题笔记第1480题:一维数组的动态和

题目:

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

想法:

想要计算数组每个位置上的动态和,利用动态规划的思想,最后一个位置上的元素是前n-1个位置上的元素与该位置上的数值的和,目标分解为求前n-1个元素和,以此类推。本质上是求解动态和并存储下来,为了节省空间资源,可以在数组上原地修改,代码如下:

class Solution:
    def runningSum(self, nums: List[int]) -> List[int]:
        for item in range(1, len(nums)):
            nums[item] += nums[item-1]
        return nums

动态规划问题需要抓住三个要点:

  1. 边界
  2. 最优子结构
  3. 状态转移公式

从最后一个状态开始分析,将目标问题分解为相同的子问题直至边界即可。该问题中的边界就是数组中第一个位置上的元素不需要修改。最优子结构就是求解最后一个位置上的动态和的子问题是求解前一个位置上的动态和。状态转移公式就是求和公式。

因为求解数组的动态和需要遍历整个数组,因此时间复杂度是O(n)
因为没有使用额外的存储空间,在数组上进行的原地修改,因此空间复杂度是O(1)

相关推荐

  1. LeetCode笔记1480动态

    2024-05-11 02:08:05       12 阅读
  2. LeetCode每日[C++]-找出K大

    2024-05-11 02:08:05       18 阅读
  3. LeetCode每日】1122. 相对排序

    2024-05-11 02:08:05       31 阅读
  4. 力扣五天 使小于等于x最小时间

    2024-05-11 02:08:05       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 02:08:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 02:08:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 02:08:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 02:08:05       20 阅读

热门阅读

  1. QT程序启动前的预加载与启动动画 C++

    2024-05-11 02:08:05       10 阅读
  2. react native 设置屏幕锁定

    2024-05-11 02:08:05       13 阅读
  3. python学习之argparse模块

    2024-05-11 02:08:05       12 阅读
  4. VirtualBox虚拟FreeBSD15显卡配置@Win10

    2024-05-11 02:08:05       11 阅读
  5. Redis缓存篇

    2024-05-11 02:08:05       9 阅读
  6. Day35 无重叠区间 + 划分字母区间 + 合并区间

    2024-05-11 02:08:05       11 阅读
  7. Nginx-那些事

    2024-05-11 02:08:05       14 阅读
  8. 【GoLang基础】垃圾回收是如何工作的?

    2024-05-11 02:08:05       11 阅读
  9. 关于emulate

    2024-05-11 02:08:05       11 阅读