
leetcode
du1232
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 32 - III. 从上到下打印二叉树 III
题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [20,9], [15,7] ] 思路:1栈1队列,k是每一层的标识数 在奇数层,进行正常的层序遍历进入队列的同时,并入栈 。如:队列[1,2] 栈原创 2021-06-21 11:25:59 · 154 阅读 · 0 评论 -
Leetcode--692-前K个高频单词
题目 给一非空的单词列表,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 示例 1: 输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2 输出: ["i", "love"] 解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。 思路: map联合vector。 map中的key是唯原创 2021-06-08 17:38:45 · 131 阅读 · 0 评论 -
LeetCode(106、144、94)二叉树前序、中序、后序遍历的非递归写法
前序 class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> v; stack<TreeNode*> st; TreeNode* cur = root; while(!st.empty()||cur) { while(cu原创 2021-06-06 20:16:13 · 128 阅读 · 0 评论 -
LeetCode--剑指 Offer 30包含min函数的栈
class MinStack { public: /** initialize your data structure here. */ stack<int> m_data; stack<int> m_min; MinStack() {} //思路:两个栈,一个正常压数据,一个只压最小数据 //m_min每次压数据时候都要判断是否比当前栈顶数据小 //如果小直接压,如果大,将自身的栈顶数据再压一次 void push(i原创 2021-05-26 23:04:59 · 84 阅读 · 0 评论 -
Leetcode--剑指offer09--用两个栈实现队列
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) class CQueue { public: stack<int>stack1; stack<int>stack2; CQueue() {} //尾部插入使用一个栈 void appendTail(int value)原创 2021-05-26 23:03:01 · 90 阅读 · 0 评论 -
leetcode--剑指offer-28,对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / 2 2 / \ / 3 4 4 3 输出 : true 思路:迭代的思想 使用迭代思想做题最重要的是,确定迭代结束的条件。 包括迭代成功结束的条件和迭代到一半失败结束的条件! 此题中,我们从左右两子树父节点开始迭代,迭代条件有三个! if(left == nullptr && right == nullptr原创 2021-05-10 17:43:48 · 94 阅读 · 0 评论 -
Leetcode---236. 二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出:3 解释:节点 5 和节点 1 的最近公共祖先是节点 3 。 思路:递归的思想,递归的结束条件是root == p || roo原创 2021-05-07 10:59:37 · 152 阅读 · 0 评论 -
Leetcode--字符串相加 C++实现
题目: 415. 字符串相加 题目描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 思路: 使用数值相加减的思路,从后向前按位相加 设置一个进位next 相加后的每一位进行尾插 最后对字符串进行逆置,得到结果 class Solution { public: string addStrings(string num1, string num2) { string ret;//定义一个string类 int end1 = num1.s原创 2021-04-05 19:02:25 · 369 阅读 · 0 评论