• 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?

    Analyse: For every number in nums, check from index 0 to it former number, if it is larger than a number, update the array. 

    Runtime: 124ms. 

     1 class Solution {
     2 public:
     3     int lengthOfLIS(vector<int>& nums) {
     4         int n = nums.size();
     5         if(n < 2) return n;
     6         
     7         vector<int> dp(n, 1);
     8         dp[0] = 1;
     9         int result = 0;
    10         for(int i = 1; i < nums.size(); i++) {
    11             for(int j = 0; j < i; j++) {
    12                 if(nums[i] > nums[j]) 
    13                     dp[i] = max(dp[i], dp[j] + 1);
    14             }
    15             result = max(result, dp[i]);
    16         }
    17         return result;
    18     }
    19 };
  • 相关阅读:
    2.6
    2.5
    2.4
    2.3
    2.2
    2.1
    条件查询
    项目办公自动化工具-文件夹照片批量插入word&#183;
    suffer根据CGCS2000坐标利用散点图生成奥维坐标
    案例应用:给照片文件夹里照片按日期排序后引用表格的照片名称批量重命名(源码)
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5745350.html
Copyright © 2020-2023  润新知