Leetcode——最长上升子序列

题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。

解题思路:

  • 以一个例子为例:2 3 1 5 4 7 9
  • 对于2,最长递增子序列为1
  • 对于3,最长递增子序列为2
  • 而对于1,最长递增子序列为2,3,但该处因为相当于和前面的断开了,所以应该定义此处的最长递增子序列为1
  • 对于5,如果和前面的1连接,最长递增子序列为1,5,长度为2;如果和前面的3连接,最长递增子序列为2,3,5,长度为3
  • 状态转移方程为:dp[i] = Math.max(1,dp[j]+1|j

class Solution {
    public int lengthOfLIS(int[] nums) {
        if(nums.length==0||nums==null)
            return 0;
        int[] dp = new int[nums.length];
        for(int i = 0;imax)
                max = nums[i];
        }
        return max;
    }
}

 

你可能感兴趣的:(Leetcode)