栈
天哪,快看
这个作者很懒,什么都没留下…
展开
-
Leetcode 921 Minimum Add to Make Parentheses Valid
Leetcode 921 Minimum Add to Make Parentheses Valid 我的解法:本题归类于栈标签下,所以用栈来解决,如果")"和栈顶的"("可以相互匹配,将栈顶元素弹出,否则压栈,最后栈中元素个数即为所求。 代码如下(C++): class Solution { public: int minAddToMakeValid(string S) { if ...原创 2019-02-22 19:30:17 · 133 阅读 · 0 评论 -
Leetcode 144 Binary Tree PreOrder Traversal
题目描述: 要求使用非递归实现: 代码如下(C++版本) class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; deque<TreeNode*> stack; if (root == NULL) retur...原创 2019-02-26 23:24:03 · 97 阅读 · 0 评论 -
Leetcode 975 Odd Even Jump
思路: 从后往前递推 分配两个数组,odd和even数组,odd【i】表示在nums【i】上奇数此跳是否能够成功,同理even数组,初始时odd【len-1】=even【len-1】= true 第奇数跳要求找到A【j】>=A【i】的最小A【j】,偶数此跳要求找到找到A【j】<=A【i】的最大A【i】 最后统计出odd【i】中为true的个数 初始代码(c++) 超时 ...原创 2019-03-03 11:15:19 · 289 阅读 · 0 评论 -
Leetcode 946 Validate Stack Sequence
题目描述: 思路:用栈模拟pushed,用cur标记popped,如果当前栈顶元素等于popped[cur],则弹栈,否则继续压栈,最后检查栈是否为空 代码如下(c++): class Solution { public: bool validateStackSequences(vector<int>& pushed, vector<int>&...原创 2019-03-02 10:38:52 · 155 阅读 · 0 评论 -
Leetcode 331 Verify PreOrder Serialization of a Binary Tree
题目描述: 首先第一步必须得将原序列化字符串按照","拆分成字符串数组。由于C++标准库没有自带的split函数,必须自己手写。直接搬用博客上的实现:http://www.cnblogs.com/lyf-sunicey/p/8489472.html 二、用STL进行字符串的分割 涉及到string类的两个函数find和substr: 1、find函数 原型:size_t find ( c...原创 2019-02-25 17:03:18 · 111 阅读 · 0 评论 -
Leetcode 341 Flatten Nested List Iterator
题目描述: 代码如下(c++)版本: class NestedIterator { public: queue<int>st; NestedIterator(vector<NestedInteger> &nestedList) { init(nestedList); } void init(vector&l...原创 2019-03-01 12:16:07 · 131 阅读 · 0 评论 -
Leetcode 739 Daily Temperatures
题目描述: 此题同样被归类于栈标签下,解题思路,使用递减栈,如果当前温度值大于栈定温度,弹栈,二者间隔天数为栈顶元素需要的回温天数。如果当前温度低于栈顶温度,则压栈。 代码如下(C++): class Solution { public: vector<int> dailyTemperatures(vector<int>& T) { vector&...原创 2019-02-24 12:03:11 · 100 阅读 · 0 评论 -
Leetcode 173 Binary Search Tree iterator
题目描述 类似于通过栈实现二叉查找树的中序遍历,将其转换为链表,将每个树节点的left指针当做next的使用。代码如下: class BSTIterator { public: TreeNode* head; BSTIterator(TreeNode* root) { bool first = false; deque<TreeNode*> stack; he...原创 2019-02-28 13:36:19 · 118 阅读 · 0 评论 -
Leetcode 726 Number of Atoms
第726题被归类于栈下,主要难点在于括号的处理,我采取的思路是将左括号压栈,然后遇到右括号弹如临时栈,在从临时栈弹回来,弹回来时乘以右括号下的系数。 代码如下(C++) class Solution { public: string countOfAtoms(string formula) { deque<string> atoms; deque<int>...原创 2019-02-23 16:54:20 · 234 阅读 · 0 评论 -
Leetcode 145 Binary Tree Postorder Traversal
题目描述: 这题紧接着144题,二叉树后序遍历的非递归 思路:利用前一个访问的元素和当前栈顶元素的关系,如果是当前栈顶元素的左儿子或者右儿子为前一个访问的元素,则表示当前元素的左右子树均被访问过了,否则将当前节点左右子树压栈 代码如下(c++)版本: class Solution { public: vector<int> postorderTraversal(Tree...原创 2019-02-27 16:22:42 · 120 阅读 · 0 评论 -
Leetcode 856 Score of Parentheses
题目描述: 解题思路:看到这些括号匹配首先想到用栈, 看到‘(’压栈并将factor因子加1 看到‘)’将栈顶'('弹栈,并将因子减1,如果和栈顶元素下标距离为1,则累加到结果中 只有相邻的'('和')'才会对res产生影响 代码如下(c++)版本: class Solution { public: int scoreOfParentheses(string S) { deq...原创 2019-03-04 10:45:37 · 218 阅读 · 0 评论