Leetcode: Longest Increasing Subsequence
来源:互联网 发布:mac上玩穿越火线 编辑:程序博客网 时间:2024/06/05 03:10
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?
Credits:
Special thanks to @pbrother for adding this problem and creating all test cases.
Hide Tags Dynamic Programming Binary Search
Solution 1
time complexity: O(
class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ res = 0 if nums==[]: return res dp = [1]*len(nums) for ind in range(1,len(nums)): for j in range(ind): if nums[j]<=nums[ind] and dp[j]+1>dp[ind]: dp[ind] = dp[j] + 1 res = max( res, dp[ind] ) return res
It will cause “Exceed Time Limit”
Solution 2
Time complexity: O(nlogn)
class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ res = 0 if nums==[]: return res temp = [] temp.append(nums[0]) res = 1 for ind in range(1,len(nums)): left, right = 0, res-1 while left<=right: #print 'left,right: ', left , right mid = (left+right)/2 #print temp,mid, ind if temp[mid]<nums[ind]: left = mid + 1 else: right = mid - 1 #print 'after binary search: ', left if left<len(temp): temp[left] = nums[ind] else: temp.append(nums[ind]) if left>=res: res += 1 return res
0 0
- [LeetCode]Longest Increasing Subsequence
- [LeetCode] Longest Increasing Subsequence
- leetcode-Longest Increasing Subsequence
- [LeetCode]Longest Increasing Subsequence
- *LeetCode-Longest Increasing Subsequence
- Leetcode: Longest Increasing Subsequence
- LeetCode Longest Increasing Subsequence
- LeetCode -- Longest Increasing Subsequence
- [Leetcode]Longest Increasing Subsequence
- LeetCode Longest Increasing Subsequence
- Longest increasing subsequence |LeetCode
- Leetcode Longest Increasing Subsequence
- Leetcode: Longest Increasing Subsequence
- 【Leetcode】Longest Increasing Subsequence
- [Leetcode]Longest Increasing Subsequence
- leetcode--Longest Increasing Subsequence
- [LeetCode]Longest Increasing Subsequence
- [leetcode]Longest Increasing Subsequence
- 机器学习逻辑回归模型总结——从原理到sklearn实践
- Ajax 请求的http头信息特点 x-requested-with
- QQ1425858665骗子
- 运维小命令
- ListView透明背景点击设置
- Leetcode: Longest Increasing Subsequence
- * 引领华为:任正非的七大领导力启示
- ios开发时,在Xcode中添加多个targets进行版本控制
- DP--完全背包--HDU - 4508
- lightoj 1179 - Josephus Problem 【约瑟夫环】
- QT笔记:数据库总结(一)
- 正版igrimace 看清楚 骗子嘴脸! 大家小心了,骗我2600骗子QQ1425858665
- 【Matlab】1. Matlab效率提升——调用C语言编写的函数 (mex,matlab C API)
- iOS手势解锁