package main
func LIS( arr []int ) int {
// write code here dp[i] 表示以 i 结尾的子数组的最长上升子序列
if len(arr) == 0 {
return 0
}
n, ans := len(arr), 1
dp := make([]int, n)
for i := 0; i < n; i++ { // 每个数组最少代表 1 个子序列长度
dp[i] = 1
}
for i := 1; i < n; i++ {
for j := 0; j < i; j++ {
if arr[j] < arr[i] {
dp[i] = max(dp[i], dp[j] + 1)
ans = max(ans, dp[i])
}
}
}
return ans
}
func max(a, b int) int { if a < b { return b }; return a }

京公网安备 11010502036488号