| 1234567891011121314151617181920212223242526272829303132 | 
							- func findNumberOfLIS(nums []int) int {
 
- 	n, max := len(nums), 1
 
- 	if n == 0 {
 
- 		return 0
 
- 	}
 
- 	dp := make([]int, n)     // The number of LIS end with nums[i]
 
- 	length := make([]int, n) // The length of LIS ...
 
- 	dp[0], length[0] = 1, 1
 
- 	for i := 1; i < n; i++ {
 
- 		dp[i], length[i] = 1, 1
 
- 		for j := 0; j < i; j++ {
 
- 			if nums[j] < nums[i] {
 
- 				if l := length[j] + 1; l == length[i] {
 
- 					dp[i] += dp[j]
 
- 				} else if length[i] < l {
 
- 					if max < l {
 
- 						max = l
 
- 					}
 
- 					dp[i] = dp[j]
 
- 					length[i] = l
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	res := 0
 
- 	for i := range dp {
 
- 		if length[i] == max {
 
- 			res += dp[i]
 
- 		}
 
- 	}
 
- 	return res
 
- }
 
 
  |