76 · 最长上升子序列Longest Increasing Subsequence
Given a sequence of integers, find the longest increasing subsequence (LIS).
You code should return the length of the LIS.
Example 2:
Input:
nums = [4,2,4,5,3,7]
Output:
4
Explanation:
LIS is [2,4,5,7]
public class Solution {
/**
* @param nums: An integer array
* @return: The length of LIS (longest increasing subsequence)
*/
public int longestIncreasingSubsequence(int[] nums) {
// write your code here
int[] f = new int[nums.length] ;
for(int i = 0 ; i < nums.length ; i++){
f[i] = 1 ;
}
for(int i = 1 ; i < nums.length ; i++){
for(int j = 0 ; j < i ; j++){
if(nums[i] > nums[j]){
f[i] = Math.max(f[i] , f[j]+1 );
}
}
}
int max = 0 ;
for(int i = 0 ; i < nums.length ; i++){
max = Math.max(max , f[i]) ;
}
return max ;
}
}