首页 > 其他 > 详细

LC 300. Longest Increasing Subsequence (LIS)

时间:2020-02-14 12:29:29      阅读:64      评论:0      收藏:0      [点我收藏+]

Link

技术分享图片

 

 

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n=nums.size();
        if(n==0) return 0;
        vector<int> dp(n+1);
        int len=1;
        dp[1]=nums[0];
        for(int i=1;i<n;++i){
            if(nums[i]>dp[len]){
                len++;
                dp[len]=nums[i];
            }else{
                //first >= nums[i]
                int left=1;
                int right=len;
                while(left<=right){
                    int mid=left+(right-left)/2;
                    if(dp[mid]>=nums[i]){
                        right=mid-1;
                    }else{
                        left=mid+1;
                    }
                }
                dp[left]=nums[i];
            }
        }
        return len;
    }
};

 

LC 300. Longest Increasing Subsequence (LIS)

原文:https://www.cnblogs.com/FEIIEF/p/12306493.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!