1027 最長等差數列

2021-10-01 08:59:32 字數 1008 閱讀 1035

題意:

給定乙個整數陣列 a,返回 a 中最長等差子串行的長度。

回想一下,a 的子串行是列表 a[i_1], a[i_2], …, a[i_k] 其中 0 <= i_1 < i_2 < … < i_k <= a.length - 1。並且如果 b[i+1] - b[i]( 0 <= i < b.length - 1) 的值都相同,那麼序列 b 是等差的。

思路:dp[i][j]表示a[i]的前面公差為j的數量

則若a[x]-a[i] == j 則dp[x][j] = dp[i][j]+1

再維護乙個最大序列

code:

class

solution

:def

longestarithseqlength

(self, a: list[

int])-

>

int:

max_l =

0 diff_dict =

for i in

range(0

,len

(a))

: diff_dict[i]

=for j in

range(0

, i)

: diff = a[i]

- a[j]

if diff not

in diff_dict[j]

: diff_dict[i]

[diff]=2

else

: diff_dict[i]

[diff]

= diff_dict[j]

[diff]+1

if diff_dict[i]

[diff]

> max_l:

max_l = diff_dict[i]

[diff]

return max_l

leetcode 1027 最長等差數列

給定乙個整數陣列 a,返回 a 中最長等差子串行的長度。回想一下,a 的子串行是列表 a i 1 a i 2 a i k 其中 0 i 1 i 2 i k a.length 1。並且如果 b i 1 b i 0 i b.length 1 的值都相同,那麼序列 b 是等差的。示例 1 輸入 3,6,9...

最長等差數列 找數字 及最長等差數列分析

今日面試題 找數字 陣列a中,除了某乙個數字x之外,其他數字都出現了三次,而x出現了一次。請給出最快的方法,找到x。最長等差數列分析 原題給定未排序的陣列,請給出方法找到最長的等差數列。分析題目描述比較簡單,但是有乙個問題我們需要首先搞清楚 等差數列中的數字,是否要和原始陣列中的順序一致。題目中,並...

最長等差數列 最長等差數列 及子串行分析

今日面試題 最長等差數列 給定未排序的陣列,請給出方法找到最長的等差數列。子串行分析 原題給定長度為n的整數數列 a0,a1,an 1,以及整數s。這個數列會有連續的子串行的整數總和大於s的,求這些數列中,最小的長度。分析如果只是像題目這樣的描述,沒有強調正數,可以採用o n 2 的方法。但是,很多...