算法
AndyJson
这个作者很懒,什么都没留下…
展开
-
栈---棒球比赛
题目你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。“+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。“D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。“C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。每一...原创 2018-11-09 16:18:22 · 252 阅读 · 0 评论 -
栈---括号的分数
题目给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。(A) 得 2 * A 分,其中 A 是平衡括号字符串。示例输入: "()"输出: 1输入: "(())"输出: 2输入: "()()"输出:原创 2018-11-14 15:48:27 · 277 阅读 · 0 评论 -
栈---二叉树的锯齿形层次遍历
题目给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]代码实现import ...原创 2018-11-16 10:22:40 · 250 阅读 · 0 评论 -
栈---验证二叉树的前序序列
题目序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#...原创 2018-11-16 10:59:21 · 423 阅读 · 0 评论 -
栈---下一个更大元素
题目给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 ...原创 2018-11-16 12:24:38 · 237 阅读 · 0 评论 -
栈---逆波兰表达式求值
题目根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9输入: [".原创 2018-11-16 12:41:12 · 260 阅读 · 0 评论 -
栈---函数的独占时间
题目给出一个非抢占单线程CPU的 n 个函数运行日志,找到函数的独占时间。每个函数都有一个唯一的 Id,从 0 到 n-1,函数可能会递归调用或者被其他函数调用。日志是具有以下格式的字符串:function_id:start_or_end:timestamp。例如:“0:start:0” 表示函数 0 从 0 时刻开始运行。“0原创 2018-11-16 20:09:21 · 456 阅读 · 1 评论 -
栈---字符串解码
题目给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[...原创 2018-11-16 20:59:19 · 607 阅读 · 0 评论 -
栈---车队
题目N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地。每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地。一辆车永远不会超过前面的另一辆车,但它可以追上去,并与前车以相同的速度紧接着行驶。此时,我们会忽略这两辆车之间的距离,也就是说,它们被假定处于相同的位置。车队 是一些由行驶在相同位置、具有相同...原创 2018-11-19 14:17:30 · 245 阅读 · 0 评论 -
栈---行星碰撞
题目给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例输入: asteroids ...原创 2018-11-17 16:35:15 · 588 阅读 · 0 评论 -
栈---二叉搜索树迭代器
题目实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。概念二叉搜索树概念:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结...原创 2018-11-14 15:26:08 · 328 阅读 · 0 评论 -
栈---每日温度
题目根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。示例例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。代码实现思路:可类比找下一个更大元素。提示:气温 列表长度...原创 2018-11-14 14:57:37 · 292 阅读 · 0 评论 -
栈---用栈实现队列
题目使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queu...原创 2018-11-09 16:44:49 · 172 阅读 · 0 评论 -
栈---用队列实现栈
题目使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者...原创 2018-11-09 18:07:55 · 172 阅读 · 0 评论 -
栈---下一个更大元素
题目给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例示例 1输入: nums1 = [4,1,2], nums2 = [1,3,...原创 2018-11-07 20:11:59 · 182 阅读 · 0 评论 -
栈---二叉树的中序遍历
题目给定一个二叉树,返回它的中序 遍历。示例输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]代码实现对于任意节点,若其左孩子不为空,则将该节点入栈,并将其左孩子置为当前节点,再进行相同处理;若其左孩子为空,弹出栈顶元素,访问该栈顶元素,然后将栈顶元素的右孩子置为当前节点;直到当前节点为null并且栈为空则遍历...原创 2018-11-13 13:06:50 · 866 阅读 · 1 评论 -
栈---二叉树的前序遍历
题目给定一个二叉树,返回它的前序遍历。示例输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]代码实现方法一:a.根节点入栈;b.弹出根节点,访问根节点;判断右孩子是否为空,如果不为空,push入栈;判断左孩子是否为空,如果不为空,push入栈。注:右孩子先入栈,左孩子后入栈,这样可以保证下一次出栈的时候...原创 2018-11-13 14:27:50 · 752 阅读 · 0 评论 -
栈---扁平化嵌套列表迭代器
题目给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的项或者为一个整数,或者是另一个列表。示例输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,1,2,1,1]。输入: [1,[4,[6]]]输出: [1,4,6...原创 2018-11-13 18:24:06 · 422 阅读 · 0 评论 -
栈---最小栈
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);...原创 2018-11-12 11:16:05 · 249 阅读 · 0 评论 -
栈---比较含退格的字符串
题目给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。输入:S = "a##c", T = "#a#c.原创 2018-11-12 11:24:36 · 285 阅读 · 0 评论 -
栈---有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例输入: "()"输出: true输入: "()[]{}"输出: true输入: "(]"输出: false输入: "([)]"输出: false...原创 2018-11-12 12:12:46 · 225 阅读 · 0 评论 -
栈---股票每日价格
题目编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。 编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票...原创 2018-11-17 17:30:09 · 637 阅读 · 0 评论