• 300. Longest Increasing Subsequence


    这个题用DP,千万不能将state设为f[i]表示前i个数字中最LIS度 ,而是设成f[i]表示前i个数字中以第i尾的LIS的长度。如果那样定义,f[i]和f[j]之间是没有太大关系。

    比如7,8,10,2,3,4,5可以,但2,3,9,10,5,6,7,8就不行

    因为f[i]表示前i个数字中以第i尾的LIS的长度,所以最后求最长的子序列的时候是遍历了所有以i结尾的最大LIS长度。

    class Solution {
    public:
        int lengthOfLIS(vector<int>& nums) {
            int length = nums.size();
            if(length <= 0)
                return 0;
            vector<int> result(length);
            for(int i = 0;i < length;i++)
                result[i] = 1;
            for(int i = 1;i < length;i++){
                int max_sum = 1;
                for(int j = i-1;j >= 0;j--){
                    if(nums[i] > nums[j]){
                        int num = result[j] + 1;
                        if(num > max_sum)
                            max_sum = num;
                    }
                }
                result[i] = max_sum;
            }
            int max = 1;
            for(int i = 0;i < length;i++){
                if(result[i] > max)
                    max = result[i];
            }
            return max;
        }
    };
  • 相关阅读:
    linux下安装配置DHCP服务器
    CentOS7安装配置Apache HTTP Server
    CentOS7安装配置DNS服务器
    CentOS7安装配置SAMBA服务器
    小程序全局监听
    springboot+redis
    java对接微信小程序
    获取上一个页面的data
    定时器
    maven项目打包
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7475487.html
Copyright © 2020-2023  润新知