Loading

随笔分类 -  数据结构和算法

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
没啥说的,基本功,得长期训练,保持感觉。
摘要:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 阅读全文
posted @ 2018-12-04 20:25 Parzulpan 阅读(139) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6, 阅读全文
posted @ 2018-12-04 20:18 Parzulpan 阅读(269) 评论(0) 推荐(0)
摘要:前言: 我们已经介绍了二叉搜索树的相关特性,以及如何在二叉搜索树中实现一些基本操作,比如搜索、插入和删除。熟悉了这些基本概念之后,相信你已经能够成功运用它们来解决二叉搜索树问题。 二叉搜索树的有优点是,即便在最坏的情况下,也允许你在O(h)的时间复杂度内执行所有的搜索、插入、删除操作。 通常来说,如 阅读全文
posted @ 2018-12-04 20:12 Parzulpan 阅读(319) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: 阅读全文
posted @ 2018-12-04 20:00 Parzulpan 阅读(195) 评论(0) 推荐(0)
摘要:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。 例如, 你可以返回这个二叉搜索树: 或者这个树也是有效的: 阅读全文
posted @ 2018-12-04 19:45 Parzulpan 阅读(178) 评论(0) 推荐(0)
摘要:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 你应该返回如下子树: 在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。 阅读全文
posted @ 2018-12-04 19:33 Parzulpan 阅读(131) 评论(0) 推荐(0)
摘要:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。 阅读全文
posted @ 2018-12-04 19:26 Parzulpan 阅读(151) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 示例 2: 阅读全文
posted @ 2018-12-04 19:17 Parzulpan 阅读(124) 评论(0) 推荐(0)
摘要:有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。 在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,...,N-1] 中的一个整数表示,其中 N = 阅读全文
posted @ 2018-12-03 22:59 Parzulpan 阅读(161) 评论(0) 推荐(0)
摘要:给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 输出: 示例 2: 输入: 输出: 注意: 阅读全文
posted @ 2018-12-03 22:58 Parzulpan 阅读(428) 评论(0) 推荐(0)
摘要:给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你 阅读全文
posted @ 2018-12-03 22:57 Parzulpan 阅读(766) 评论(0) 推荐(0)
摘要:有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。 为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素 阅读全文
posted @ 2018-12-03 22:57 Parzulpan 阅读(249) 评论(0) 推荐(0)
摘要:使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: 说明: 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/po 阅读全文
posted @ 2018-12-03 22:55 Parzulpan 阅读(109) 评论(0) 推荐(0)
摘要:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和  阅读全文
posted @ 2018-12-03 22:55 Parzulpan 阅读(132) 评论(0) 推荐(0)
摘要:给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例 1: 注意: 阅读全文
posted @ 2018-12-03 22:54 Parzulpan 阅读(866) 评论(0) 推荐(0)
摘要:克隆一张无向图,图中的每个节点包含一个 label (标签)和一个 neighbors (邻接点)列表 。 OJ的无向图序列化: 节点被唯一标记。 我们用 # 作为每个节点的分隔符,用 , 作为节点标签和邻接点的分隔符。 例如,序列化无向图 {0,1,2#1,2#2,2}。 该图总共有三个节点, 被 阅读全文
posted @ 2018-12-03 22:53 Parzulpan 阅读(664) 评论(0) 推荐(0)
摘要:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 示例 2: 示例 3: 阅读全文
posted @ 2018-12-03 22:52 Parzulpan 阅读(117) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 注意空字符串可被认为是有效字符串。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 阅读全文
posted @ 2018-12-03 22:51 Parzulpan 阅读(102) 评论(0) 推荐(0)
摘要:根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 阅读全文
posted @ 2018-12-03 22:51 Parzulpan 阅读(141) 评论(0) 推荐(0)
摘要:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: 阅读全文
posted @ 2018-12-03 22:50 Parzulpan 阅读(87) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页