摘要:
1、题目 2、分析 使用deque构造一个队列,只保留最大的几个数字。 3、代码分析 class Solution { public: class myQueue{ public: deque<int> max_queue; void pop(int value){ if(!max_queue.em 阅读全文
摘要:
1、题目 2、分析 用栈来解决问题 3、代码 class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> result; int num1; int num2; for(int i=0; i<tokens.siz 阅读全文
摘要:
1、题目 2、分析 使用栈来实现这个结构,如果是左括号,则入栈,如果遇到对应的右括号,则左括号出栈,如果为空则再次入栈。 3、代码 class Solution { public: bool isValid(string s) { stack<char> pre; unordered_map <ch 阅读全文
摘要:
1、题目 2、分析 其实一个队列就可以了,就是我们使用一个队列,当需要查询stack头部的元素的时候,可以将其他元素弹出,然后压如的元素底部。 这样pop是O(n)的操作,而其他的是O(1)的操作(如果不考虑queue内部实现复杂度的话) 3、代码 class MyStack { public: q 阅读全文
摘要:
1、题目 2、分析 C++存在这样几种容器,vector,list, deque vector的优点是线性空间,随机存取的效率高,但是插入删除的效率不高。 list使用双向链表实现,空间不连续,但是插入删除的效率高,随机存取的效率不高。 deque综合了两者的优点,使用线性空间,随机存取的效率高,可 阅读全文
摘要:
1、题目 2、分析 按照官方的分析,可以按照其特点,验证是否存在整除的周期,然后对该周期进行逐个验证,但是这样复杂度为O(n^2)。 另外一种方法是两个s字符串拼接起来,这样s字符串一定是它的一个子字符串。 另外一个办法是,获得KMP算法的next数组,这样根据多个重复字符串的特点,进行一个规律的验 阅读全文
摘要:
一、题目 二、代码 class Solution { public: int strStr(string haystack, string needle) { if (needle.length()==0) return 0; if( haystack.length()< needle.length 阅读全文
摘要:
一、题目 二、代码 class Solution { public: string reverseLeftWords(string s, int n) { string start = s.substr(0, n); string end = s.substr(n, s.length()-n); e 阅读全文
摘要:
一、题目 二、代码 class Solution { public: string reverseWords(string s) { int count = 0; string result; string s_expand = ' '+s; int i = s_expand.size()-1; w 阅读全文
摘要:
一、题目 二、代码 class Solution { public: string replaceSpace(string s) { string result; for(int i=0; i < s.length(); i++ ){ if(s[i] == ' '){ result = result 阅读全文