LeetCode – LongestIncreasing Subsequence (Java)
2017-03-13 10:09
323 查看
For example, given [10, 9, 2, 5, 3, 7, 101, 18], the longestincreasing subsequence is [2, 3, 7, 101]. Therefore the length is 4.
Java Solution 1 - Naive
Letmax[i] represent the length of the longest increasing subsequence so far.
If any element before i is smaller than nums[i], then max[i] = max(max[i],max[j]+1).
Here is an example:
public int lengthOfLIS(int[] nums) { if(nums==null || nums.length==0) return 0; int[] max = new int[nums.length]; for(int i=0; i<nums.length; i++){ max[i]=1; for(int j=0; j<i;j++){ if(nums[i]>nums[j]){ max[i]=Math.max(max[i], max[j]+1); } } } int result = 0; for(int i=0; i<max.length; i++){ if(max[i]>result) result = max[i]; } return result; } |
We can put the increasing sequence in a list.
for each num in nums
if(list.size()==0)
add num to list
elseif(num > last element in list)
add num to list
else
replace the element in the list which is the smallest but bigger than num
public int lengthOfLIS(int[] nums) { if(nums==null || nums.length==0) return 0; ArrayList<Integer> list = new ArrayList<Integer>(); for(int num: nums){ if(list.size()==0 || num>list.get(list.size()-1)){ list.add(num); }else{ int i=0; int j=list.size()-1; while(i<j){ int mid = (i+j)/2; if(list.get(mid) < num){ i=mid+1; }else{ j=mid; } } list.set(j, num); } } return list.size(); } |
相关文章推荐
- LeetCode-Easy-Java-Longest Continuous Increasing Subsequence
- [leetcode-300]Longest Increasing Subsequence(java)
- [LeetCode]Longest Increasing Subsequence
- Longest Increasing Subsequence - LeetCode
- LeetCode Longest Increasing Subsequence
- Longest Increasing Subsequence(最长增长子数列)-LeetCode关于数组的思路和技巧
- 【LeetCode】300 Longest Increasing Subsequence
- Longest Increasing Subsequence (LIS) 的java实现
- Leetcode199: Longest Increasing Subsequence
- leetcode_Longest Increasing Subsequence
- [LeetCode][JavaScript]Longest Increasing Subsequence
- leetcode-Longest Increasing Subsequence
- LeetCode—300 Longest Increasing Subsequence
- LeetCode300——Longest Increasing Subsequence
- LeetCode Longest Increasing Subsequence DP
- [LeetCode] Longest Increasing Subsequence
- Leetcode: Longest Increasing Subsequence
- [LeetCode] Longest Increasing Subsequence
- [LeetCode]Longest Increasing Subsequence
- leetcode 300: Longest Increasing Subsequence