300. 最长递增子序列

/**

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:

输入:nums = [10,9,2,5,3,7,101,18]

输出:4

解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

**/

class Solution {

    public int lengthOfLIS(int[] nums) {

        if(nums.length == 0){

            return 0;

        }

        int max = 1;

        int[] arr = new int[nums.length];

        arr[0] = 1;

        for(int i=1;i

            arr[i] =  getValue(nums,i,arr,max);

            if(max < arr[i]){

                max = arr[i];

            }

        }

        return max;

    }

    private int getValue(int [] nums, int i,int [] arr,int max){

        int result = 1;

        for(int j = i-1;j>=0;j--){

            if(nums[i] >nums[j]){

                result = Math.max(arr[j]+1,result);

            }else if(nums[i]==nums[j]){

                result = Math.max(arr[j],result);

            }

            if(result > max){

                return result;

            }

        }

        return result;

    }

}

你可能感兴趣的:(300. 最长递增子序列)