ThreeStones Blog

Thinking will not overcome fear but action will.

代码随想录算法训练营第十六天

二叉树[LeetCode104二叉树的最大深度、Leetcode111二叉树的最小深度、Leetcode222完全二叉树的结点个数]

[TOC] 第一题 LeetCode104二叉树的最大深度 解法一[后序遍历递归法] 时间复杂度O(n) 空间复杂度O(n) class Solution { public: int get_depth(TreeNode* cur){ if (cur == NULL) return 0; int l...

代码随想录算法训练营第十五天

二叉树[二叉树层序遍历、Leetcode226翻转二叉树、Leetcode101对称二叉树]

[TOC] 第一题[层序遍历] 第一小题[LeetCode102二叉树层序遍历] LeetCode102二叉树层序遍历 层序遍历空间复杂度O(n) 层序遍历空间复杂度O(n) class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { ...

代码随想录算法训练营第十四天

二叉树[LeetCode144二叉树前序遍历、Leetcode94二叉树的中序遍历、Leetcode145二叉树的后续遍历]

[TOC] 第一题 LeetCode144二叉树前序遍历 解法一[递归法] 空间复杂度O(n) 空间复杂度O(n) class Solution { public: void traversal(vector<int> &result, TreeNode* cur){ if (cur != nu...

代码随想录算法训练营第十三天

栈和队列[LeetCode239滑动窗口最大值、LeetCode347前k个高频元素]

[TOC] 第一题 LeetCode239滑动窗口最大值 解法一[单调队列] 空间复杂度O(n) 空间复杂度O(k) class Solution { private: class MyQueue { public: deque<int> que; // 当队列不空且比较当前要弹...

代码随想录算法训练营第十一天

栈和队列[LeetCode20有效的括号、LeetCode1047删除字符串中所有的相邻重复项、LeetCode150逆波兰表达式求值]

[TOC] 第一题 LeetCode20有效的括号 解法一[存储左括号] 空间复杂度O(n) 空间复杂度O(n) class Solution { public: bool isValid(string s) { stack<char> left_symbol; for (int i =...

代码随想录算法训练营第十天

栈和队列[LeetCode232用栈实现队列、LeetCode225用队列实现栈]

[TOC] 第一题 LeetCode232用栈实现队列 解法一[双栈实现队列] push和empty为O(1), pop和peek为O(n) 空间复杂度O(n) class MyQueue { public: stack<int> stIn; stack<int> stOut; MyQueu...

代码随想录算法训练营第九天

字符串[LeetCode28实现strStr()、LeetCode459重复的子字符串]

[TOC] 第一题 LeetCode28实现strStr() 解法一[kmp] 时间复杂度O(m + n) 空间复杂度O(m) class Solution { public: void getNext(int *next, string s){ // i为前缀的末尾 // j为后缀的末尾 ...

代码随想录算法训练营第八天

字符串[LeetCode344反转字符串、LeetCode541反转字符串II 、卡码网54.替换数字、LeetCode151翻转字符串里的单词,卡码网55右旋转字符串]

[TOC] 第一题 LeetCode344反转字符串 解法一 时间复杂度O(n) 空间复杂度O(1) class Solution { public: void reverseString(vector<char>& s) { int n = s.size() - 1; for ...

代码随想录算法训练营第七天

哈希表[LeetCode454四数相加、LeetCode383赎金信 、LeetCode15三数之和 、LeetCode18四数之和]

[TOC] 第一题 LeetCode454四数相加 解法一 时间复杂度O(n*n) 空间复杂度O(n*n) class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& num...

代码随想录算法训练营第六天

哈希表[LeetCode242有效的字母异位词、LeetCode349两个数组的交集、LeetCode202快乐数、LeetCode1两数之和]

[TOC] 第一题 LeetCode242.有效的字母异位词 解法一[multi_set容器] 时间复杂度: O(logn*n) 空间复杂度: O(logn) class Solution { public: bool isAnagram(string s, string t) { // 直接调用库版本 ...