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 }