題意:
給定乙個整數陣列 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 的方法。但是,很多...