zoukankan      html  css  js  c++  java
  • leetcode : Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence.

    For example,

    Given [10, 9, 2, 5, 3, 7, 101, 18],

    The longest increasing subsequence is [2, 3, 7, 101], therefore the length is 4. Note that there may be more than one LIS combination, it is only necessary for you to return the length.

    Your algorithm should run in O(n2) complexity.

    Follow up: Could you improve it to O(n log n) time complexity?

     

    tag: dynamic programming. 动态规划。

     

    f[i] = max{f[j] + 1}, j必须满足 j < i && nums[j] <= nums[i] 

     

    注意: sequence 与 substring的区别

     

    public class Solution {
        public int lengthOfLIS(int[] nums) {
            if(nums == null || nums.length == 0) {
                return 0;
            }
            int length = nums.length;
            int[] dp = new int[length];
            for(int i = 0; i < length; i++) {
                dp[i] = 1;
            }
            
            int max = dp[0];
            for(int i = 1; i < length; i++)
              for(int j = 0; j < i; j++) {
                  if(nums[i] > nums[j]) {
                      dp[i] = Math.max(dp[j] + 1, dp[i]);
                  }
                  max = Math.max(max,dp[i]);
              }
           return max;
        }
    }
    

      

  • 相关阅读:
    Some Depth Theory
    Hom和$otimes$如何把我绕晕
    A natrual way to introduce homotopy groups
    指数多项式的Galois群计算
    Trianglated Category and Derived Categories
    最近的代数课上的一些灵魂提问
    致青年朋友的一封信 莫洛亚
    一个函数证明题
    游客的故事
    14. 运算符重载(二)
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6422262.html
Copyright © 2011-2022 走看看