下面是个人理解官方答案和修改的版本,保过测试集。在各位大佬面前班门弄斧了哈。 #include <algorithm> #include <vector> class Solution { public: int LIS(vector<int>& arr) { // write code here if(arr.size() < 1){ return 0;}//这里补充一下官方答案的缺陷 if(arr.size() == 1){ return 1;}//这里补充一下官方答案的缺陷 vector<int> laborer(arr.size(), 1);//用于动态维护的数组 int result = 0; //最终要返回的结果,需要维护更新result = max(result, laborer[i]) for(int i = 0; i < arr.size(); i++){ for(int j = 0; j < i; j++){//每次与前方元素比较,时间<n> arr[j] && laborer[j] +1 > laborer[i]){ //前方元素的长度+1后就是当前的长度 laborer[i] = laborer[j] + 1; result = max(result, laborer[i]);//维护 } } } return result; } };</n></int></int></vector></algorithm>
点赞

相关推荐

牛客网
牛客企业服务