摘要:
104.二叉树的最大深度 (优先掌握递归) 迭代法,上一篇已经讲过,只需要对每一层+1,这里重要些递归法 递归法注意:如果当前节点为NULL,返回0,不是NULL,那么就是 1+ max(right,left) 代码: 1 void maxD_cursor(TreeNode* node, int& 阅读全文
摘要:
层序遍历 注意: 1,使用队列的形式,依次入队,同时对队列进行计数 2,知道数目消失,才进行下一个队列 代码: 1 vector<vector<int>> levelOrder(TreeNode* root) 2 { 3 vector<vector<int>> result; 4 if (root 阅读全文
摘要:
递归遍历 重点: 1,TreeNode的自定义 2,val =0 == val = NULL; 代码: 1 void preRecursor(TreeNode* root, vector<int>& result) 2 { 3 if (root == NULL) 4 return; 5 result 阅读全文
摘要:
239. 滑动窗口最大值 难点: 1,想好怎么快速找到区块内的最大数值,往常使用的是在遍历一次,但是是O(m*n) 思路: 1,使用单调队列,所有的数值都必须是从大到小, 2,用队列保持必要的顺序,而且对于大于K的循环,每次都要求pop push这两个操作 代码: 1 void pop(deque< 阅读全文
摘要:
20. 有效的括号 特点: 左括号之后,可能还会有左括号,但是只要有右括号,那么它必须立刻和最近的左括号 代码: 1 char returnRightChar(char &c) 2 { 3 switch (c) 4 { 5 case '[': return ']'; 6 case '(': retu 阅读全文
摘要:
232.用栈实现队列 注意: 1,构造函数不需要 2,需要有两个成员变量 in out 代码: 1 class MyQueue { 2 public: 3 stack<int> in; 4 stack<int>out; 5 MyQueue() { 6 7 } 8 9 void push(int x) 阅读全文
摘要:
28. 实现 strStr() 难点: 1,制作KMP算法 2,next 数组要求的是,找到的下标:0/ s[i]==s[j]才可以跳出来 代码: 1 vector<int> getNextList(string needle) 2 { 3 vector<int> next(needle.size( 阅读全文
摘要:
344.反转字符串 代码: 1 void reverseString(vector<char>& s) { 2 3 int i = 0; 4 int j = s.size() - 1; 5 while (i < j) 6 { 7 char mid = s[i]; 8 s[i] = s[j]; 9 s 阅读全文
摘要:
454.四数相加II 1,难点: 1,多个数组之间,会有重复出现的数组,如果单用multiset也是会出错的 2,如果用mutliset,在使用 distance 找出来 equal_range的值的时候,也是会出现奇怪的错误的 2,正确思路 1,把重复出现的节点,次数 存放到map种,然后进行遍历 阅读全文
摘要:
242.有效的字母异位词 繁冗版: 1,思路: 先建立两个map,对应两个字符串对应的字符,同时对他们进行计数,如果这两个数字相等,那么就是相等 2,代码 1 bool isAnagram_complicate(string s, string t) 2 { 3 unordered_map<char 阅读全文