image.png

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func findNumberOfLIS(nums []int) int {
    6. dp := make([]int,len(nums))
    7. count := make([]int,len(nums))
    8. maxLength := 1
    9. for i :=0;i<len(nums);i++{
    10. dp[i] = 1
    11. count[i] = 1
    12. for j:=0;j<i;j++{
    13. if nums[j]<nums[i] {
    14. if dp[j]+1>dp[i] {
    15. dp[i] = dp[j]+1
    16. count[i] = count[j]
    17. }else if dp[j]+1==dp[i] {
    18. count[i] += count[j]
    19. }
    20. }
    21. }
    22. if maxLength < dp[i]{
    23. maxLength = dp[i]
    24. }
    25. }
    26. var maxNum int
    27. for i := 0; i <= len(dp) - 1; i += 1{
    28. if dp[i] == maxLength{
    29. maxNum += count[i]
    30. }
    31. }
    32. return maxNum
    33. }
    34. func main() {
    35. fmt.Println(findNumberOfLIS([]int{1,3,5,4,7}))
    36. fmt.Println(findNumberOfLIS([]int{2,2,2,2,2}))
    37. }

    image.png