您的位置:首页 > 产品设计 > UI/UE

leetcode_673 Number of Longest Increasing Subsequence

2017-12-02 01:03 369 查看
        好久没有发过leetcode上面的题目的解决方法了,恰好今天做了一道难度为medium的题目,就发出来吧。

原题目链接:https://leetcode.com/problems/number-of-longest-increasing-subsequence/description/

题目描述:

Given an unsorted array of integers, find the number of longest increasing subsequence.

Example 1:
Input: [1,3,5,4,7]
Output: 2
Explanation: The two longest increasing subsequence are [1, 3, 4, 7] and [1, 3, 5, 7].


Example 2:
Input: [2,2,2,2,2]
Output: 5
Explanation: The length of longest continuous increasing subsequence is 1, and there are 5 subsequences' length is 1, so output 5.


Note: Length of the given array will be not exceed 2000 and the answer is guaranteed to be fit in 32-bit signed int.

        用动态规划算法解决这道问题,设定两个数组length[]和num[],length数组用于存储直到元素nums[i]的最长序列的长度,num数组用于存储直到元素nums[i]的最长序列的个数,它们之间满足递推关系:

length[k]=max(length[k] , length[i]+1),其中length[i]满足nums[k]>nums[i]

num[k]=sum(num[i]),其中num[i]满足length[k]=length[i]+1 && nums[k]>nums[i]。

        利用以上两个递推关系就可以写程序:





AC结果(有点慢):

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: