最長等差數列 最長定差子串行(LC1218)

2021-10-14 02:27:11 字數 1975 閱讀 6312

起初,我的思路是這樣的,首先我把用sort函式將arr排個序,如果difference>0,就從小到大,如果difference<=0,就從大到小排,開陣列dp[i]記錄以arr[i]結尾的部分有序序列構成的最長等差數列個數,如果arr[i]==arr[j]+difference j∈[0,i-1],dp[i]=dp[j]+1; s=max(dp[i],s);

但是你很就會發現有問題,那就是我們排完序後的序列已經不再是原序列,當然我們得到的也將不是子串行。以下為最初的**。例子顯然會過不了。

後來,考慮動態規劃解題,遞推關係式如下:

g(num) 表示以元素num為定差子串行結尾的子串行長度

f(k) 前k個元素中最長定差子串行的長度

當前元素num

所在子串行長度等於前乙個序列數num-difference所在子串行的長度+1

如果num之前沒有出現num-difference元素 則g[num-difference]為0

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

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

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

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

求最長等差數列

給定未排序的陣列,請給出方法找到最長的等差數列。分析題目描述比較簡單,但是有乙個問題我們需要首先搞清楚 等差數列中的數字,是否要和原始陣列中的順序一致。題目中,並沒有說明,這個就需要大家在面試的過程中和面試官進行交流。我們在這裡對兩種情況都進行討論 保證數字的順序 等差數列是要求相鄰兩個元素之間的差...