Given an integer array , return the length of the longest strictly increasing subsequence.
Example 1:
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101],
therefore the length is 4.
Example 2:
Input: nums = [0,1,0,3,2,3]
Output: 4
Example 3:
Input: nums = [7,7,7,7,7,7,7]
Output: 1
Constraints:
1 <= nums.length <= 2500
-104 <= nums[i] <= 104
dp判断即可,我单独写了函数就不能跑出来,把函数重新放回去,在主程序中就能过,应该传递的时候没有传递地址的原因。
class Solution {
public int lengthOfLIS(int[] nums) {
int n=nums.length;
int[]dp=new int[n];
dp[0]=1;
for (int i = 1; i &lt; dp.length; i++) {
int max=0;
for(int j=0;j&lt;i;j++){
if(nums[j]&lt;nums[i]){
max=Math.max(max, dp[j]);
}
}
dp[i]=1+max;
}
int max_final=0;
for (int i : dp) {
max_final=Math.max(max_final, i);
}
return max_final;
}
} Runtime: 55 ms, faster than 72.42% of Java online submissions for Longest Increasing Subsequence.
Memory Usage: 42.8 MB, less than 23.32% of Java online submissions for Longest Increasing Subsequence.