300. Longest Increasing Subsequence

1. Question

Given an integer array nums, return the length of the longest strictly increasing subsequence.

A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example, [3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].

2. Examples

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

3. Constraints

  • 1 <= nums.length <= 2500
  • -104 <= nums[i] <= 104

4. References

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-increasing-subsequence 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

5. Solutions

class Solution {
  public int lengthOfLIS(int[] nums) {
    int len = nums.length;
    int max = 1;
    if (len == 0) {
      return 0;
    }

    int[] res = new int[len];
    for (int i = 0; i < len; i++) {
      res[i] = 1;
    }

    for (int i = 1; i < len; i++) {
      for (int j = i - 1; j >= 0; j--) {
        if (nums[i] > nums[j]) {
          res[i] = Math.max(res[j] + 1, res[i]);
          max = Math.max(res[i], max);
        }
      }
    }
    return max;
  }
}
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2022-05-18 16:24:00

results matching ""

    No results matching ""