面試題之演算法部分 LIS最長遞增子串行

2021-07-04 17:47:24 字數 396 閱讀 9204

動態規劃法:

假設陣列a中元素為

設l(j)為以aj結尾的子陣列序列的最長遞增子串行的長度。

要用動態規劃來求解,則必須找到遞推關係式,即要找到當前狀態l(j)與過去狀態l(j-1)、l(j-2)、…..l(0)之間的關係。假設我們已經求出了l(j-1)、l(j-2)、…..l(0),那麼如何得到l(j)呢,我們這樣來做,要保證遞增,則我們從0到j-1遍歷一邊陣列,找到其比a[j]小的元素,最長遞增子串行一定從這些中取然後加上一,那麼如何保證最長呢,我們設定乙個max,在遍歷的過程中不斷更新max即可。下面給出遞推式:

l(j) = max;

有了遞推式,**就容易寫出來了。

int lis(int a, int n)

面試題之演算法部分 深入快速排序

本篇文章我將講述快速排序的基本思想,實現,和時間複雜度的深入分析。基本思想 選取待排序列中的某個元素t,然後按照與該元素的大小關係重新整理序列中的元素,使得整理後的序列中排在t以前的元素均小於t,排在t以後的元素均大於等於t,我們將t稱為劃分元素。此時可以保證此時t的位置一定和最終有序序列t的位置相...

面試題(十一)最長遞增子串行

給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為6的陣列a,則其最長的單調遞增子串行為,長度為4 這個演算法採用dp策略,核心是維護乙個end陣列,其中end i 代表以parray i 作為子陣列的最後乙個數時,這個子陣列的最大長度,那麼end...

演算法 面試題 16 16 部分排序

給定乙個整數陣列,編寫乙個函式,找出索引m和n,只要將索引區間 m,n 的元素排好序,整個陣列就是有序的。注意 n m盡量最小,也就是說,找出符合條件的最短序列。函式返回值為 m,n 若不存在這樣的m和n 例如整個陣列是有序的 請返回 1,1 示例 0 len array 1000000 解法 如果...