牛客题霸 [ 最长递增子序列] C++题解/答案

题目描述

给定数组arr,设长度为n,输出arr的最长递增子序列。(如果有多个答案,请输出其中字典序最小的)

题意:

直接暴力会超时
应该用二分+贪心

题解:

class Solution {public:/*** retrun the longest increasing subsequence* @param arr int整型vector the array* @return int整型vector*/vector<int> LIS(vector<int>& arr) {// write code hereint n = arr.size();if (n < 2) return arr;int ans = 0;vector<int> ret(n);vector<int> st;for (int i = 0; i < n; i++){if (st.size() == 0 || arr[i] > st.back()){st.push_back(arr[i]);ret[i] = ++ans;}else{int l = 0, h = ans-1;while (l < h){int m = (l+h)/2;if (st[m] < arr[i]) l = m+1;else h = m;}st[h] = arr[i];ret[i] = h+1;}}vector<int> res(ans);for (int i = n-1; i >= 0; i--){if (ret[i] == ans){res[--ans] = arr[i];}}return res;}
};

牛客题霸 [ 最长递增子序列] C++题解/答案相关推荐

  1. 牛客题霸 [最长公共子序列] C++题解/答案

    牛客题霸 [最长公共子序列] C++题解/答案 题目描述 给定两个字符串str1和str2,输出连个字符串的最长公共子序列.如过最长公共子序列为空,则输出-1. 题解: dp经典问题 代码: clas ...

  2. 牛客题霸 [最长重复子串] C++题解/答案

    牛客题霸 [最长重复子串] C++题解/答案 题目描述 一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串. 给定一个字符串, ...

  3. 牛客题霸 [最长公共子串]C++题解/答案

    牛客题霸 [最长公共子串]C++题解/答案 题目描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1 题解: lcs模板 代码: class Solut ...

  4. 牛客题霸 [ 最长公共前缀] C++题解/答案

    牛客题霸 [ 最长公共前缀] C++题解/答案 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 题解: 原本想暴力做,直接多层循环套,发现并不用 注意本题,给出了多组字符串,求它们的最长公共 ...

  5. 牛客题霸 [容器盛水问题] C++题解/答案

    牛客题霸 [容器盛水问题] C++题解/答案 题目描述 给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水. 具体请参考样例解释 题解: 我们找出容器的左 ...

  6. 牛客题霸 [子数组最大乘积] C++题解/答案

    牛客题霸 [子数组最大乘积] C++题解/答案 题目描述 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积. 题解: 同时记录最大值和最小值,为什么?因为给的元素 ...

  7. 牛客题霸 [滑动窗口的最大值] C++题解/答案

    牛客题霸 [滑动窗口的最大值] C++题解/答案 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一 ...

  8. 牛客题霸 [ 集合的所有子集] C++题解/答案

    牛客题霸 [ 集合的所有子集] C++题解/答案 题目描述 现在有一个没有重复元素的整数集合S,求S的所有子集 注意: 你给出的子集中的元素必须按升序排列 给出的解集中不能出现重复的元素 题解: 先s ...

  9. 牛客题霸 [ 最小的K个数] C++题解/答案

    牛客题霸 [ 最小的K个数] C++题解/答案 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题解: 如果有n&l ...

最新文章

  1. 用Graphviz来画图 1
  2. 利用CNN来检测伪造图像
  3. CVPR2021最新接收论文合集!22个方向100+篇论文汇总
  4. 怎么判断模式窗体打开的窗体名_QtitanRibbon是什么?该怎么用?
  5. P3374 【模板】树状数组 1
  6. 【web安全】记一次 Commons Collections 新调用链的挖掘
  7. 数组到指针的隐式转换
  8. APR分析-共享内存篇
  9. Linux 下安装python软件包(pip、nose、virtualenv、distribute )
  10. 使用Java API的5个技巧
  11. 编写python代码估算sin(x)的值
  12. IOS PhoneGap项目调用NATIVE
  13. mysql ---- 全文索引:中文语义分词检索
  14. 卸载搜狗拼音输入法linux,Ubuntu下使用搜狗拼音输入法
  15. DeFi冰火两重天:数千项目,鲜有人用,存量厮杀如何撼动传统金融?
  16. python中的ln函数_python中的对数log函数表示及用法
  17. 小程序-小程序审核时间
  18. Springcloud个人总结
  19. Vue和elementUI常用组件问题
  20. NOI试题(题目+答案)(三)(上)

热门文章

  1. 上大学后男生的两种变化
  2. 扎哈遗作:北京大兴机场,耗资800亿,被英国《卫报》评为新世界七大奇迹!...
  3. 历史上最怪异的23种飞行器,设计者脑子里都想什么了
  4. 鸿蒙手机启动器apk下载,澪Pro启动器本体下载最新版
  5. oracle 加密怎么解密,oracle加密encrypt,解密decrypt,
  6. php smtp验证,php通过smtp验证登陆
  7. c语言 overflow_C语言和其他语言的不得不说的差别!
  8. 695.岛屿的最大面积(026)BFS
  9. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计
  10. C++实现链式存储二叉树