iOS開發演算法提公升一 最長上公升子串行

2021-10-05 15:14:59 字數 612 閱讀 3587

題目:給定乙個無需的整數陣列,找出其中最長的子串行長度

舉例:輸入:[10,9,2,5,3,7,101,18]

輸出: 4

解釋:最長的上公升子串行的組合,你只需要輸出對應的長度即可

說明:可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。

演算法的時間複雜度:最差為:o(n²),最小為o(n)

/**

思路,從第乙個位置開始往後迴圈判斷,每個位置的公升序數量,儲存最大值

時間複雜度基本為:最差為:o(n²),最小為o(n)

:----0.002150

**/void bruteforce(nsarray *dataarr)

int res =1;

for (int i = 0; i < dataarr.count; i++)

}nslog(@"%d",res);

}int main(int argc, const char * ar**)

return 0;

}

這個演算法不是最優解,只是其中的一種解法,能夠完成這個,剛剛開始,後續如果有更好的解法,會及時更新;大家可以一起討論學習;

Dp 最長上公升子串 最長上公升子串行

乙個數的子串bi,當b1 b2 bs的時候,我們稱這個子串是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串 ai1,ai2,aik 這裡1 i1 i2 ik n。如 對於序列 1,7,3,5,9,4,8 有它的一些上公升子串,如 1,7 3,5,9 等等。這些子串中最長...

最長上公升子串行nlogn演算法

這題目是經典的dp題目,也可叫作lis longest increasing subsequence 最長上公升子串行 或者 最長不下降子串行。很基礎的題目,有兩種演算法,複雜度分別為o n logn 和o n 2 a.o n 2 演算法分析如下 a 1 a n 存的都是輸入的數 1 對於a n 來...

最長上公升子串行nlogn演算法

定義d k 長度為k的上公升子串行的最末元素,若有多個長度為k的上公升子串行,則記錄最小的那個最末元素。注意d中元素是單調遞增的,下面要用到這個性質。首先len 1,d 1 a 1 然後對a i 若a i d len 那麼len d len a i 否則,我們要從d 1 到d len 1 中找到乙個...