用java实现最长递增子序列
以下是使用Java实现最长递增子序列的代码:
public static int longestIncreasingSubsequence(int[] nums) {
int n = nums.length;
int[] dp = new int[n];
int maxLen = 1;
dp[0] = 1;
for (int i = 1; i < n; i++) {
dp[i] = 1;
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
maxLen = Math.max(maxLen, dp[i]);
}
return maxLen;
}
这个算法的时间复杂度为$O(n^2)$,其中$n$是数组的长度。它使用一个一维数组$dp$来记录以每个元素结尾的最长递增子序列的长度。对于每个元素$i$,它需要遍历之前的所有元素$j$,如果$j$小于$i$,则可以将以$j$结尾的最长递增子序列的长度加1,并将结果与当前元素结尾的最长递增子序列的长度取最大值。最后,算法返回$dp$数组中的最大值,即整个数组的最长递增子序列的长度。
原文地址: https://www.cveoy.top/t/topic/bkFh 著作权归作者所有。请勿转载和采集!