leetcode dynamic programming
2015-12-29 16:13
295 查看
300. Longest Increasing Subsequence
Question
Given an unsorted array of integers, find the length of longest increasing subsequence.For example,
Given
[10, 9, 2, 5, 3, 7, 101, 18],
The longest increasing subsequence is
[2, 3, 7, 101], therefore the length is
4. Note that there may be more than one LIS combination, it is only necessary for you to return the length.
Your algorithm should run in O(n2) complexity.
Follow up: Could you improve it to O(n log n) time complexity?
Solution
dp[i] means the length of an increase sequence that includes nums[i], and it must equals a previous dp value add one which reaches the max.class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ dp = [1]*len(nums) for i in xrange(len(nums)): for y in xrange(i): if nums[i] >nums[j]: dp[i] = max(dp[i],dp[j]+1) return max(dp) if dp else 0
相关文章推荐
- 牛逼的 弹出层 layer !!!
- hibernate基于注解实现映射关系的配置
- IOS开发之保存图片到Documents目录及PNG,JPEG格式相互转换
- POJ 2229:Sumsets【规律】
- AFNetworking 使用归纳
- CentOS升级python2.7
- virtualBox的虚拟机镜像在vmware里面无法联网,ifconfig 没有eth0
- 浅析Java中的final关键字
- 回来,沉淀!-2015年终总结
- 如何使用eclipse上传项目到git.osc
- vim命令整理
- SVG DOM常用属性和方法介绍(1)
- 我眼中的Linux设备树(五 根节点)
- GitHub中README.MD的使用
- CocoaPods的安装使用和常见问题
- 代码调试
- RESTful架构
- WindowsXP下 VC6.0 编译、安装Boost库
- windows系统信息,内存状态,区域信息的查询
- Windows访问Linux共享文件名乱码