NC164. 最长上升子序列(二)
描述
示例1
输入:
[1,4,7,5,6]
输出:
4
说明:
最长上升子序列为 [1,4,5,6] ,长度为4。C++ 解法, 执行用时: 21ms, 内存消耗: 4112KB, 提交时间: 2022-08-01
static const auto io_sync_off = [](){ std::ios::sync_with_stdio(false); std::cout.tie(nullptr); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: int LIS(vector<int>& a) { vector<int>res; for(int i:a) { auto it=lower_bound(res.begin(),res.end(),i); if(it==res.end()) res.push_back(i); else *it=i; } return res.size(); } };
C++ 解法, 执行用时: 28ms, 内存消耗: 4208KB, 提交时间: 2022-02-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 该数组最长严格上升子序列的长度 * @param a int整型vector 给定的数组 * @return int整型 */ int LIS(vector<int>& a) { // write code here if(a.size() <= 1) return a.size(); vector<int> vecAns; for(auto itera = a.begin(); itera != a.end(); itera++){ auto it = lower_bound(vecAns.begin(), vecAns.end(), *itera); if(it == vecAns.end()){ vecAns.push_back(*itera); }else{ *it = *itera; } } return vecAns.size(); } };
C++ 解法, 执行用时: 29ms, 内存消耗: 4224KB, 提交时间: 2022-02-06
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 该数组最长严格上升子序列的长度 * @param a int整型vector 给定的数组 * @return int整型 */ int LIS(vector<int>& a) { vector<int> top; for(int val : a) { auto iter=upper_bound(top.begin(), top.end(), val); if(iter==top.end()) { top.push_back(val); } else { *iter=val; } } return top.size(); } };
C++ 解法, 执行用时: 31ms, 内存消耗: 4228KB, 提交时间: 2021-11-29
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 该数组最长严格上升子序列的长度 * @param a int整型vector 给定的数组 * @return int整型 */ int LIS(vector<int>& a) { // write code here vector<int> top; for(auto v:a){ auto iter=lower_bound(top.begin(),top.end(),v); if(iter==top.end()){ top.push_back(v); }else{ *iter=v; } } return top.size(); } };
C++ 解法, 执行用时: 31ms, 内存消耗: 4244KB, 提交时间: 2021-11-20
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 该数组最长严格上升子序列的长度 * @param a int整型vector 给定的数组 * @return int整型 */ int LIS(vector<int>& a) { vector<int> top; for(int val : a) { auto iter=lower_bound(top.begin(), top.end(), val); if(iter==top.end()) { top.push_back(val); } else { *iter=val; } } return top.size(); } };