日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python 等差数列_413. 等差数列划分(Python)

發布時間:2023/12/20 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 等差数列_413. 等差数列划分(Python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

難度:★★☆☆☆

類型:數組

方法:動態規劃

力扣鏈接請移步本題傳送門

更多力扣中等題的解決方案請移步力扣中等題目錄

如果一個數列至少有三個元素,并且任意兩個相鄰元素之差相同,則稱該數列為等差數列。

例如,以下數列為等差數列:

1, 3, 5, 7, 9

7, 7, 7, 7

3, -1, -5, -9

以下數列不是等差數列。

1, 1, 2, 5, 7

數組 A 包含 N 個數,且索引從0開始。數組 A 的一個子數組劃分為數組 (P, Q),P 與 Q 是整數且滿足 0<=P

如果滿足以下條件,則稱子數組(P, Q)為等差數組:

元素 A[P], A[p + 1], ..., A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 。

函數要返回數組 A 中所有為等差數組的子數組個數。

示例:

A = [1, 2, 3, 4]

返回: 3, A 中有三個子等差數組: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。

解答

看到按照規律統計子數組個數這一類的問題,很快地可以想到用動態規劃來解決。

定義數組dp,維度與輸入A一致,dp[i]表示以A[i]結尾的等差子數組的個數,dp數組中的元素全部初始化為零,因為以Ai結尾的等差子數組的個數最少為零。

從第三個數字開始遍歷數組,如果遇到以該數組結尾的連續三個元素是等差的,那么說明發現新的等差子數組,或者原有的等差子數組繼續延長。這時,以A[i]結尾的等差數組的個數為以A[i-1]結尾的等差子數組的個數加一,簡單的例子就可以說明。可以獲得遞推關系式:

dp[i] = dp[i-1] + 1

最終,返回dp數組中所有元素和即可。

class Solution:

def numberOfArithmeticSlices(self, A):

dp = [0 for _ in range(len(A))]

for i in range(2, len(A)):

if A[i] - A[i - 1] == A[i - 1] - A[i - 2]:

dp[i] = dp[i - 1] + 1

return sum(dp)

如有疑問或建議,歡迎評論區留言~

有關更多力扣中等題的python解決方案,請移步力扣中等題解析

總結

以上是生活随笔為你收集整理的python 等差数列_413. 等差数列划分(Python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。