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 ;
}
}
本文介绍了一种解决寻找整数数组中最长上升子序列问题的算法,给出了Java代码实现。通过双重循环动态规划求解,最终返回最长上升子序列的长度。示例中,输入数组为[4, 2, 4, 5, 3, 7],输出为4,对应的LIS为[2, 4, 5, 7]。
1380

被折叠的 条评论
为什么被折叠?



