标签:size div asi 表示 cto ++ lis tor i++
这个题用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就不行
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; } };
300. Longest Increasing Subsequence
标签:size div asi 表示 cto ++ lis tor i++
原文地址:http://www.cnblogs.com/ymjyqsx/p/7475487.html