Java求給定陣列的最長遞增子串行

2021-08-07 06:42:58 字數 623 閱讀 2317

最近一直在討論的求解最長遞增子串行問題(lis)

參考了很多求解方法,在此記錄以下**實現,後續發現更優方法再更新

**實現:

public

intlis(int a )

int max=1;

for (int i = 1; i < a.length; i++)

if (max//得到當前最長遞增序列的長度以及該子串行的最末元素的位置

max=arr[i];

} }}

return max;

}

以上**返回最長遞增子串行的長度,若需要返回最長的遞增子串行,**實現如下:

public arraylistmaxsubincreasearray(int array)

}++list[i];

if(index>-1)

tmp.addall(res.get(index));

tmp.add(array[i]);

res.add(tmp);

if(list[i]>max)

}return res.get(maxindex);

}}

陣列最長遞增子串行

這個問題和矩陣相乘比較相似,但因為它只需要計算a 1.j 的代價,因此比矩陣相乘少了一層迴圈,矩陣相稱的複雜度是n的3次方,這個問題的複雜度是n平方的。要把資料列印出來,破費了一點周折,需要好好理解,其中遞迴退出的條件是,陣列記錄的位置和自身的位置相同,但這個位置的資料也要輸出,因此在else語句中...

LIS 求最長遞增子串行

動態規劃,dp 時間複雜度 olog n 2 include include include include include using namespace std int lis int a,int alen,int len if alen i maxlen return maxlen int m...

求最長單調遞增子串行

問題描述 設計乙個時間的演算法,找出由n個數組成的最長單調遞增子串行。演算法描述 演算法實現 includestruct date void ascorder struct date a,int n 輸出最長單調遞增子串行 找到最長單調遞增子串行開始的單元 int max 0 intfore for...