funcMaxIncrSeq(nums []int)int { max := 0 arr := make([][]int, 0, len(nums)) for _, num := range nums { bj := false for j := 0; j < max; j++ { if num < arr[j][len(arr[j])-1] { t := make([]int, len(arr[j])) copy(t, arr[j-1]) t[len(t)-1] = num arr[j] = t bj = true break } } if !bj { t := make([]int, max+1) if max != 0 { copy(t, arr[len(arr)-1]) } t[max] = num arr = append(arr, t) max = len(arr) } } return max }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
funcMaxIncrSeqSize(nums []int)int { arr := make([]int, len(nums)) for i := 0; i < len(arr); i++ { arr[i] = math.MaxInt32 } max := 0 for _, num := range nums { for i := 0; i < len(arr); i++ { if arr[i] > num { arr[i] = num if i+1 > max { max = i + 1 } break } } } return max }