动态规划-673Number of Longest Increasing Subsequence
来源:互联网 发布:3160ac无线网卡优化 编辑:程序博客网 时间:2024/05/21 17:20
题目:
Given an unsorted array of integers, find the number of longest increasing subsequence.
Example 1:
Input: [1,3,5,4,7]Output: 2Explanation: The two longest increasing subsequence are [1, 3, 4, 7] and [1, 3, 5, 7].
Example 2:
Input: [2,2,2,2,2]Output: 5Explanation: 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.
题意解读:给定一个未排序的整数数组,寻找最长递增子数组的长度
class Solution { public int findNumberOfLIS(int[] nums) { //定义两个辅助数组 // len[i]:以nums[i]结尾的,最长递增子序列的长度 // cnt[i]:以nums[i]结尾的,最长递增子序列的条数 //状态转移 //如果nums[i]>nums[j] 并且len[i] = len[j]+1(说明再一次找到最长递增子序列) cnt[i] += cnt[j] //如果nums[i]>nums[j] 并且len[i] < len[j]+1 (说明有新的最长递增子序列生成) len[i] = len[j]+1;cnt[i] = cnt[j] int[] len = new int[nums.length]; int[] cnt = new int[nums.length]; int maxLen = 0;int res = 0; for(int i = 0; i < nums.length; i++){ //初始化len[i],cnt[i] len[i] = 1;cnt[i] = 1; for(int j = 0; j < i; j++){ if(nums[i] > nums[j]) if(len[i] == len[j] + 1) cnt[i] += cnt[j]; else if(len[i] < len[j] + 1){ len[i] = len[j]+1;//更新最大程度 cnt[i] = cnt[j]; } } if(maxLen == len[i]) res += cnt[i];//如过len[i]是当前最大长度,将当前cnt[i]累加到结果中去 if(maxLen < len[i]){ //如果len[i]大于当前最大长度,则更新最大长度,并且将结果更新为cnt[i] maxLen = len[i]; res = cnt[i]; } } return res; } }
阅读全文
0 0
- 动态规划-673Number of Longest Increasing Subsequence
- leetcode 673. Number of Longest Increasing Subsequence 动态规划DP
- 673[Medium]: Number of Longest Increasing Subsequence
- Number of Longest Increasing Subsequence
- Leetcode算法学习日志-673 Number of Longest Increasing Subsequence
- Leetcode 673 Number of Longest Increasing Subsequence(第六周作业)
- 673. Number of Longest Increasing Subsequence
- leetcode 673. Number of Longest Increasing Subsequence
- Number of Longest Increasing Subsequence 解题报告
- [LeetCode] 673. Number of Longest Increasing Subsequence
- LeetCode673. Number of Longest Increasing Subsequence
- LeetCode 673.Number of Longest Increasing Subsequence
- 673. Number of Longest Increasing Subsequence
- 673. Number of Longest Increasing Subsequence
- Leetcode | Number of Longest Increasing Subsequence
- leetcode_673 Number of Longest Increasing Subsequence
- leetcode012-Number of Longest Increasing Subsequence
- 673. Number of Longest Increasing Subsequence
- Spark2.x学习笔记:12、Shuffle机制
- CF Round #439 (Div 2)
- ros下orb-slam2 安装(一)
- 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- c#常见的数据类型转换
- 动态规划-673Number of Longest Increasing Subsequence
- 基于live555的rtsp 客户端模块优化 标签: live555rtsp客户端 2014-11-14 09:24 980人阅读 评论(0) 收藏 举报 分类: 流媒体(16) 版权声明:本文
- c/c++中sort用法
- 学习Linux C编程之语句
- java常见的面试题
- 如何获取微信公众号的“biz”?
- Android:在AndroidManifest中注册BroadcastReceiver的权限问题
- 对Webview的实现方式
- 基于live555实现的RTSPServer对底层进行性能优化的方法 标签: live555RTSPServerlive555性能EasyDarwinlive性能优化 2017-09-12 08:1