c++
shawn&lycheeo
这个作者很懒,什么都没留下…
展开
-
构建二叉树-ACM模式
构建二叉树-ACM模式。原创 2023-04-02 16:29:19 · 92 阅读 · 0 评论 -
106. 从中序与后序遍历序列构造二叉树
代码】106.从中序与后序遍历序列构造二叉树。原创 2023-03-28 13:50:25 · 45 阅读 · 0 评论 -
112. 路径总和
代码】112.路径总和。原创 2022-07-21 20:18:44 · 99 阅读 · 0 评论 -
513. 找树左下角的值
513.找树左下角的值。原创 2022-07-19 20:07:56 · 81 阅读 · 0 评论 -
《每日一题》257. 二叉树的所有路径
二叉树的所有路径转载 2022-06-10 16:33:32 · 69 阅读 · 0 评论 -
《每日一题》110. 平衡二叉树
二叉树求平衡原创 2022-06-09 14:54:15 · 122 阅读 · 0 评论 -
《每日一题》222. 完全二叉树的节点个数
二叉树求节点个数原创 2022-06-09 14:36:15 · 146 阅读 · 1 评论 -
《每日一题》111. 二叉树的最小深度
二叉树求最小深度原创 2022-06-06 16:55:02 · 82 阅读 · 0 评论 -
《每日一题》104. 二叉树的最大深度
二叉树求高度原创 2022-06-02 16:20:34 · 59 阅读 · 0 评论 -
《每日一题》101. 对称二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) ...原创 2022-05-31 16:36:36 · 61 阅读 · 0 评论 -
《每日一题》226. 翻转二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr...原创 2022-05-16 20:16:58 · 99 阅读 · 0 评论 -
二叉树统一迭代
无法同时解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况。那我们就将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记。如何标记呢,就是要处理的节点放入栈之后,紧接着放入一个空指针作为标记。这种方法也可以叫做标记法。中序遍历:class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; .转载 2022-05-11 19:42:54 · 79 阅读 · 0 评论 -
二叉树-知识点
满二叉树满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。完全二叉树完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点。优先级队列其实是一个堆,堆就是一棵完全二叉树,同时保证父子节点的顺序关系。二叉搜索树前面介绍的树,都没有数值的,而二叉搜索树是有数值的了,二叉搜索树是一个有序树。转载 2022-04-30 17:36:20 · 298 阅读 · 0 评论 -
《每日一题》347. 前 K 个高频元素
class Solution {public: //小顶堆,左大于右 class comparison{ public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs){ return lhs.second > rhs.second; } }; vector<in...原创 2022-04-28 15:50:33 · 139 阅读 · 0 评论 -
《每日一题》239. 滑动窗口最大值
class Solution {private: class Myqueue{ public: //queue在没有指定容器的情况下,deque就是默认底层容器 //pop(value):如果窗口移除的元素value等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作 //push(value):如果push的元素value大于入口元素的数值,那么就将队列入口的元素弹出,直到push元素的数值小于等于队列入口元素的数值为止 dequ...原创 2022-04-27 19:24:38 · 142 阅读 · 0 评论 -
《每日一题》150. 逆波兰表达式求值
class Solution {public: //stoi函数,把字符串转换成int int evalRPN(vector<string>& tokens) { stack<int> st; //注意a和b的顺序 for (int i = 0; i < tokens.size(); i++){ if (tokens[i] == "+"){ ...原创 2022-04-26 16:56:34 · 183 阅读 · 0 评论 -
《每日一题》1047. 删除字符串中的所有相邻重复项
class Solution {public: string removeDuplicates(string s) { stack<char> st; for (char S : s) { if (st.empty() || S != st.top()) { st.push(S); } else { st.pop(); // s ...原创 2022-04-25 21:22:14 · 196 阅读 · 0 评论 -
《每日一题》20. 有效的括号
class Solution {public: bool isValid(string s) { int size = s.size(); stack<char> st; for (int i = 0; i < size; i++){ if (s[i] == '(') st.push(')'); else if (s[i] == '{') st.push('}'); ...原创 2022-04-21 16:03:04 · 126 阅读 · 0 评论 -
《每日一题》225. 用队列实现栈
class MyStack {public: queue<int> qu; MyStack() { } void push(int x) { qu.push(x); } int pop() { int size = qu.size(); size--;//只剩一个数的时候不用变换 while (size--){ qu.push...原创 2022-04-20 15:38:40 · 123 阅读 · 0 评论 -
《每日一题》232. 用栈实现队列
class MyQueue {public: stack<int> stin; stack<int> stout;/* push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。*/ MyQueue() { } void push(int x) { stin.push...原创 2022-04-20 11:16:31 · 88 阅读 · 0 评论 -
《每日一题》459. 重复的子字符串
class Solution {public://len % (len - (next[len - 1] + 1)) == 0,说明有重复子字符串//数组长度减去最长相同前后缀的长度相当于是第一个周期的长度,也就是一个周期的长度,如果这个周期可以被整除,就说明整个数组就是这个周期的循环。// next[len - 1] != -1//说明字符串有最长相同的前后缀(就是字符串里的前缀子串和后缀子串相同的最长长度),长度为next[len - 1]+1 void getnext(int*...原创 2022-04-15 19:08:03 · 173 阅读 · 0 评论 -
《每日一题》28. 实现 strStr()
class Solution {public: //设置前缀表 void getnext(int* next, const string& s){ int j = -1; next[0] = j; for (int i = 1; i < s.size(); i++){ //s[i]和s[j+1]不相等 while (s[i] != s[j+1] && j...原创 2022-04-15 11:53:10 · 52 阅读 · 0 评论 -
《每日一题》剑指 Offer 58 - II. 左旋转字符串
class Solution {public:/*反转区间为前n的子串反转区间为n到末尾的子串反转整个字符串*/ void reverse(string& s, int start, int end){ for (int i = start, j = end ; i < j; i++, j--){ swap(s[i], s[j]); } } string reverseLeftWords(string...原创 2022-04-13 15:14:47 · 65 阅读 · 0 评论 -
《每日一题》151. 颠倒字符串中的单词
class Solution {public: //移除多余空格 void removespace(string& s){ int fastindex = 0, slowindex = 0; //查找前面的多余空格 while (s.size() > 0 && fastindex < s.size() && s[fastindex] == ' '){ fa...原创 2022-04-12 18:18:52 · 289 阅读 · 0 评论 -
《每日一题》剑指 Offer 05. 替换空格
class Solution {public: string replaceSpace(string s) { int cnt = 0;//空格个数 int len = s.length(); for (int i = 0; i < len; i++){ if (s[i] == ' ') cnt++; } s.resize(len + 2 *cnt);...原创 2022-04-11 22:29:40 · 151 阅读 · 0 评论 -
《每日一题》541. 反转字符串 II
class Solution {public://学会使用reverse函数 string reverseStr(string s, int k) { int len = s.length(); for (int i = 0; i < len; i = i + (2 * k)){ // 1. 每隔 2k 个字符的前 k 个字符进行反转 // 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 ...原创 2022-04-07 11:26:40 · 103 阅读 · 0 评论 -
《每日一题》344. 反转字符串
在反转链表中,使用了双指针的方法。那么反转字符串依然是使用双指针的方法,只不过对于字符串的反转,其实要比链表简单一些。因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。class Solution {public: void reverseString(vector<char>& s) { int len = s.size(); for (int i = 0; i <...原创 2022-04-06 19:19:25 · 433 阅读 · 0 评论 -
《每日一题》18. 四数之和
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> result; sort(nums.begin(),nums.end()); int len = nums.size(); for (int i =...原创 2022-04-04 19:57:09 · 168 阅读 · 0 评论 -
《每日一题》15. 三数之和
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result; sort(nums.begin(),nums.end());//排序,从小到大,使用双指针法 for (int i = 0; i < nums.size(); i...原创 2022-04-03 20:23:32 · 284 阅读 · 0 评论 -
《每日一题》383. 赎金信
class Solution {public: bool canConstruct(string ransomNote, string magazine) { int a[26] = {0}; for (int i = 0; i < magazine.length(); i++) { a[magazine[i]-'a'] ++; } for (int j = 0; j < ransomNote...原创 2022-04-02 18:30:07 · 232 阅读 · 0 评论 -
《每日一题》454. 四数相加 II
class Solution {public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int, int> map;//A和B的和,key存和,value存出现次数 for (auto ...原创 2022-04-01 19:47:34 · 175 阅读 · 0 评论 -
《每日一题》1. 两数之和
class Solution {public: //map的结构<key,value> vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> map; for (int i = 0; i < nums.size(); i++){ auto iter = map.find(t...原创 2022-03-31 19:26:50 · 197 阅读 · 0 评论 -
《每日一题》202. 快乐数
class Solution {public: //熟悉取一个数值上各位上的值 int getsum(int n ){ int sum = 0; while (n){ sum = sum + ( (n % 10) * (n % 10) ); n = n / 10; } return sum; } bool isHappy(int n) { ...原创 2022-03-30 17:19:49 · 183 阅读 · 0 评论 -
《每日一题》349. 两个数组的交集
class Solution {public: //学会使用unordered_set,输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的,同时可以不考虑输出结果的顺序 vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_set<int> result; unordered...原创 2022-03-29 23:25:59 · 147 阅读 · 0 评论 -
《每日一题》242. 有效的字母异位词
class Solution {public: bool isAnagram(string s, string t) { int num[26] = {0};//清0 for (int i = 0; i < s.length(); i++){ num[s[i]-'a']++; } for (int j = 0; j < t.length(); j++){ num[...原创 2022-03-25 17:51:55 · 167 阅读 · 0 评论 -
《每日一题》142. 环形链表 II
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *detectCycle(ListNode *head) { ListNode* dhead =...原创 2022-03-23 18:37:59 · 997 阅读 · 0 评论 -
《每日一题》面试题 02.07. 链表相交
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB...原创 2022-03-22 17:32:55 · 848 阅读 · 0 评论 -
《每日一题》19. 删除链表的倒数第 N 个结点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next...原创 2022-03-21 20:59:12 · 322 阅读 · 0 评论 -
《每日一题》24. 两两交换链表中的节点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(ne...原创 2022-03-19 12:43:32 · 400 阅读 · 0 评论 -
《每日一题》206.反转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(ne...原创 2022-03-17 14:34:25 · 516 阅读 · 0 评论