尋找最長的等差數列

2021-07-11 20:44:06 字數 663 閱讀 8032

問題描述:給定乙個大小為n的陣列,要求寫出乙個演算法,求出其最長的等差數列的子串行。

首先問題並沒有要求要按照原來陣列的順序,所以可以先對該陣列排序。

如果不要求該最長子序列中的元素是相鄰的話,可以用乙個簡單的dp來完成。

令 f [i] [j] 表示以 i 為結尾的某子串行(該子串行的等差為 j )的最大長度;那麼 f [i] [j]= f [i-1] [ num[i] - num[j] ] +1 , i>0,此等式則為dp的轉移方程,明顯這個演算法的複雜度是o( n^ 2)的;

**詳解:(特判陣列中相等的)

int judge(int a)//尋找a陣列中最長的等差數列

}return ans;

}

還有另外一種dp的方法,令 dp[i] [j] 表示 i 到 j 的子串能夠取到的最大值, 那麼明顯 dp [i] [j] = max

dp[i][j]+=k;

ans=max(ans,dp[i][j]);

}return ans+1;

}如果要求子串行是連續的,那麼用 dp[i] 表示以i結尾的子串可以得到的最大長度, len[i]對應這個長度的序列的等差值;

所以有 dp [i] = dp[i-1]+1 (當 nums[i]-nums[i-1] = len[i-1] )或2;

尋找最長的等差數列

題目描述 description 給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過10000000.輸出描述 output descr...

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

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

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

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