摘要:
$ git clone git@github.com:xxxxx/xxxx.git my-awesome-proj Cloning into 'my-awesome-proj'... ssh: connect to host github.com port 22: Connection timed 阅读全文
摘要:
day16 - 二叉树part03 力扣104. 二叉树的最大深度 思路:最大深度,即为顶点高度。 如果想求高度,人类思维的角度,就是从底层开始算,往上一层+1,加到顶点就是高度,也就是最大深度。 因此要用后序遍历,这样可以左右根的顺序进行遍历,从而一层一层向上返回结果,返回到根节点的时候就计算出来 阅读全文
摘要:
day15 - 二叉树part02 力扣102. 二叉树的层序遍历 思路:使用一个队列,将根节点放入队列,并使用size记录每一层的节点数量,然后遍历。 为什么和深度优先搜索不一样了呢?为什么不能使用递归了呢? 比如先序遍历时,每层的逻辑都是根左右,遍历到当前节点,就对当前节点实施根左右,可以完成递 阅读全文
摘要:
day14 - 二叉树part01 力扣144. 二叉树的前序遍历 最基本的递归调用,递推三个关键 参数和返回值 终止条件 每一层的逻辑 代码: 递归法 class Solution { public: vector<int> result; void traverse(TreeNode* root 阅读全文
摘要:
day13 - 栈与队列part03 力扣239. 滑动窗口的最大值 思路:利用单调队列,很难想的出来。 因为每次是进一个数,弹出一个数,因此没必要每次都进行排序,只需要拿到最大值即可。 用单调队列实现,是一个双向队列 pop()函数:如果要pop的值是队列头部的值,那么就弹出,否则不操作。 pus 阅读全文
摘要:
day11 - 栈与队列part02 力扣20. 有效的括号 思路: 利用栈的特性,遇见左括号就把右括号压栈,遇见右括号,就对比和栈顶元素是否相同,不同就返回false。 代码 class Solution { public: stack<int> st; bool isValid(string s 阅读全文
摘要:
day10 - 栈与队列 part01 力扣232. 用栈实现队列 思路:建立一个输入栈,一个输出栈,每次push进队列时,放进输入栈,出队列时,从输出栈弹出,如果输出栈是空的,就把输入栈的全部数都弹出到输出栈。 代码 class MyQueue { public: MyQueue() { } vo 阅读全文
摘要:
KMP算法 KMP算法的作用 在一个字符串里面查找子串,比如字符串"aabbaabbaaf"中,查找"aabbaaf" KMP名字由来 三个老头,一个姓K,一个姓M,一个姓P 算法思想 这个算法很复杂,需要循序渐进解释。从人类的正常思考方式讲起。 暴力算法 如果让你从中寻找aabbaaf子串,你会怎 阅读全文
摘要:
day08 - 字符串 part01 力扣344. 反转字符串 超级简单,双指针,swap void reverseString(vector<char>& s) { int i = 0; int j = s.size() - 1; while (i < j) { swap(s[i], s[j]); 阅读全文
摘要:
力扣454. 四数相加II 思路:把四个数组分为两组,前两组的和 + 后两组的和 = 0; 利用哈希表,key为前两组的和,value为出现的次数,因为根据题意,只需输出有几种情况,因此value设置为出现的次数,然后用后两组的和的负数,作为key查找,如果找到了就count += value。 最 阅读全文