image.png

    1. // 时间On^2, 空间On, 答案不对,应该构造数组的下标不对
    2. func LIS( arr []int ) []int {
    3. if len(arr) == 0 {
    4. return arr
    5. }
    6. n := len(arr)
    7. res := 0
    8. cur := []int{}
    9. dp := make([]int, n+1)
    10. for i := 1; i < n; i++ {
    11. dp[i] = 1
    12. for j := 0; j < i; j++ {
    13. if arr[j] < arr[i] {
    14. dp[i] = max(dp[i], dp[i] + 1)
    15. }
    16. }
    17. if dp[i] > res {
    18. res = dp[i]
    19. cur = append(cur, arr[i])
    20. }
    21. }
    22. return cur
    23. }
    24. func max(a, b int) int {
    25. if a > b {
    26. return a
    27. }
    28. return b
    29. }