zekaiyang@home:~$

  • Stack And Queue

    栈和队列 1.基础知识 队列先进先出,一个口进,一个口出;栈先进后出,出口入口在同一端。 2.栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 内部使用两个栈(stIn和stOut)来模拟队列的操作。 两个栈的作用: stIn:用于接收所有入队(push)操作的元素 stOut:用于执行出队(pop)和查看队首(peek)操作 关键操作: push(x):直接将元素压入stIn栈 pop(): 如果stOut为空,将stIn中的所有元素依次弹出并压入stOut(这会反转元素的顺序) 然后从stOut弹出顶部元素 peek():利用pop()获取元素,但要把元素重新压回stOut empty():当两个栈都为空时队列为空 时间复杂度分析 push(x):O(1) pop():平均O(1),最坏O(n)(需要转移元素时) peek():同pop() empty():O(1) #include<iostream> #include<stack> using namespace std; class MyQueue { public: stack<int> stIn; stack<int> stOut; /** Initialize your data...

  • Two Pointers

    双指针 1.移除元素 2.反转字符串 3.替换数字 4.翻转字符串里的单词 5.翻转链表 6.删除链表的倒数第N个节点 7.链表相交 8.环形链表 9.三数之和 10.四数之和

  • String

    字符串 1.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 #include<iostream> #include<string> using namespace std; string reverseString(string s){ int left=0; int right=s.size()-1; while(left<right){ char temp; temp=s[left]; s[left]=s[right]; s[right]=temp; left++; right--; } return s; } int main(){ string s="hello"; cout<<reverseString(s); } 2.反转字符串02 给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k...