給定一個無序的整數數組,找到其中最長上升子序列的長度。
示例:
輸入: [10,9,2,5,3,7,101,18]
輸出: 4
解釋: 最長的上升子序列是 [2,3,7,101],它的長度是 4。
解題思路:動態規劃
public static int longestIncreasingSubsequence(int[] nums) {
// write your code here
if(nums.length == 0 || nums == null)
return 0;
int []dp = new int[nums.length];
Arrays.fill(dp,1);//初始值全部是1,因爲最小是1
for(int i = 1;i<nums.length;i++){
for(int j = 0;j<i;j++){
if(nums[i]>nums[j]){
dp[i] = Math.max(dp[i],dp[j]+1);
}
}
}
int maxCur = Integer.MIN_VALUE;
for(int i = 0;i<dp.length;i++){
System.out.println(dp[i]);
if(dp[i]>maxCur)
maxCur = dp[i];
}
return maxCur;
}