12 2021 档案

摘要:1、题目 2、分析 使用deque构造一个队列,只保留最大的几个数字。 3、代码分析 class Solution { public: class myQueue{ public: deque<int> max_queue; void pop(int value){ if(!max_queue.em 阅读全文
posted @ 2021-12-17 10:28 星光夜 阅读(57) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2021-12-16 10:02 星光夜 阅读(52) 评论(0) 推荐(0)
摘要:1、题目 2、分析 使用栈来实现这个结构,如果是左括号,则入栈,如果遇到对应的右括号,则左括号出栈,如果为空则再次入栈。 3、代码 class Solution { public: bool isValid(string s) { stack<char> pre; unordered_map <ch 阅读全文
posted @ 2021-12-13 16:39 星光夜 阅读(49) 评论(0) 推荐(0)
摘要:1、题目 2、分析 其实一个队列就可以了,就是我们使用一个队列,当需要查询stack头部的元素的时候,可以将其他元素弹出,然后压如的元素底部。 这样pop是O(n)的操作,而其他的是O(1)的操作(如果不考虑queue内部实现复杂度的话) 3、代码 class MyStack { public: q 阅读全文
posted @ 2021-12-12 10:38 星光夜 阅读(55) 评论(0) 推荐(0)
摘要:1、题目 2、分析 C++存在这样几种容器,vector,list, deque vector的优点是线性空间,随机存取的效率高,但是插入删除的效率不高。 list使用双向链表实现,空间不连续,但是插入删除的效率高,随机存取的效率不高。 deque综合了两者的优点,使用线性空间,随机存取的效率高,可 阅读全文
posted @ 2021-12-11 17:46 星光夜 阅读(57) 评论(0) 推荐(0)
摘要:1、题目 2、分析 按照官方的分析,可以按照其特点,验证是否存在整除的周期,然后对该周期进行逐个验证,但是这样复杂度为O(n^2)。 另外一种方法是两个s字符串拼接起来,这样s字符串一定是它的一个子字符串。 另外一个办法是,获得KMP算法的next数组,这样根据多个重复字符串的特点,进行一个规律的验 阅读全文
posted @ 2021-12-08 16:35 星光夜 阅读(63) 评论(0) 推荐(0)
摘要:一、题目 二、代码 class Solution { public: int strStr(string haystack, string needle) { if (needle.length()==0) return 0; if( haystack.length()< needle.length 阅读全文
posted @ 2021-12-07 10:56 星光夜 阅读(50) 评论(0) 推荐(0)
摘要:一、题目 二、代码 class Solution { public: string reverseLeftWords(string s, int n) { string start = s.substr(0, n); string end = s.substr(n, s.length()-n); e 阅读全文
posted @ 2021-12-07 09:58 星光夜 阅读(36) 评论(0) 推荐(0)
摘要:一、题目 二、代码 class Solution { public: string reverseWords(string s) { int count = 0; string result; string s_expand = ' '+s; int i = s_expand.size()-1; w 阅读全文
posted @ 2021-12-06 16:04 星光夜 阅读(54) 评论(0) 推荐(0)
摘要:一、题目 二、代码 class Solution { public: string replaceSpace(string s) { string result; for(int i=0; i < s.length(); i++ ){ if(s[i] == ' '){ result = result 阅读全文
posted @ 2021-12-06 15:08 星光夜 阅读(37) 评论(0) 推荐(0)
摘要:一、题目 二、分析 其实主要思路,仍然是先判断存在的整数周期,对其中前k个数字进行翻转,翻转可以参考之前的思路,进行双指针翻转,可以实现O(n)的复杂度。 另外一个方面,对于长度不满足2k的字符串,进行分别判断。 如果修改为迭代方式,那么需要考虑如何拆分字符串,保证最后能够返回完整的字符串。 另外一 阅读全文
posted @ 2021-12-05 20:40 星光夜 阅读(46) 评论(0) 推荐(0)
摘要:一、题目 二、代码 class Solution { public: void reverseString(vector<char>& s) { //长度 int string_len = s.size(); //这个也可以使用双指针翻转 int left = 0; int right = stri 阅读全文
posted @ 2021-12-04 16:33 星光夜 阅读(58) 评论(0) 推荐(0)