【第十七天 - 动态规划 题目分析】

  • 先简单回顾一下,今天预计分析的题目: 53. Maximum Subarray

  • 题目叙述:https://leetcode.com/problems/maximum-subarray/

  • 题目叙述:

    • 题目会给一个 nums 的 list,需要找出至少一个数字的连续值,他们相加的结果会是最大的
      https://ithelp.ithome.com.tw/upload/images/20210917/20140592E6ivIYKvgn.png
  • 测资的 Input/Output

    • 会给一个 nums 的 list,需要回传连续相加最大的值
      https://ithelp.ithome.com.tw/upload/images/20210917/20140592lOctlMrk8E.png
  • 这种题目「暴力的解法」就是把每个相加的值储存起来,找出最大的值 (max)
    https://ithelp.ithome.com.tw/upload/images/20210917/201405929iTuDFC9xl.png

  • 若有N笔资料,那暴力解法的

    • 时间成本:需要两个回圈,大约 O(N^2)
    • 空间成本:需要 N*N 的空间
  • 由於他是要算最佳解,我们只要记录 max 即可

    • 我们从第2个位置( index = 1 )开始读取 nums
      • 若前一个位置大於 0 (才有累加的价值),就将此位置+前一个位置的值
      • 若前一个位置小於等於 0 (没有必要累加),就不用理他,此位置就保持原状
        https://ithelp.ithome.com.tw/upload/images/20210917/20140592N6knHzzi4E.png
  • python 实作

    class Solution:
        def maxSubArray(self, nums: List[int]) -> int:
            for i in range (1, len(nums)):
                if(nums[i-1] > 0):
                    nums[i] = nums[i]+nums[i-1]
                    
            return max(nums)

<<:  [ Day16] Esp32s用AP mode + Relay - (程序码讲解)

>>:  Material UI in React [ Day 16 ] Navigation Menu (下拉框)

D17/ 我要用的 View 没有支援 Compose 怎麽办? - AndroidView

今天大概会聊到的范围 Android View 前两天来回进出了公司楼下的 7-11 两三次,每次...

Day 2 - 原型: Figma

前言 我先建立一个原型(Prototype), 用来厘清这个WebApp的功能跟UI界面。 建立原型...

EP 29: Archive and Publish TopStore App for Android in Visual Studio

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

[Day 27] 阿嬷都看得懂的 JavaScript 怎麽写

阿嬷都看得懂的 JavaScript 怎麽写 昨天我们提及程序语言的 4 个重要特徵: 变数 型别 ...

(Day29) ES6 - 解构赋值

前言 解构赋值是 ES6 新增语法糖,若要使用阵列、物件中的值,来见新的变数/常数,可以使用解构赋值...