随笔分类 -  数据结构

数组,链表,哈希,树,图
摘要:已知二叉树前序遍历和中序遍历的结果,重建二叉树 解决思路: 前序遍历的结果中根节点在左右孩子的前面,左孩子在右孩子前面;中序遍历的结果中根节点在左右孩子的中间,中序遍历可以找出根节点的左子树和右子树,前序遍历的第一个节点是根节点,根据这些特性可以递归的重建二叉树 例如 pre=[1,2,4,7,3, 阅读全文
posted @ 2018-12-08 18:23 孤独风中一匹狼 阅读(6939) 评论(0) 推荐(0)
摘要:如何判断有向图是否有环 1.dfs,bfs 2.拓扑排序 使用拓扑排序来解决这个问题,首先什么是拓扑排序?一直删除出度为0的顶点直到没有出度为0的顶点,如果最终还有顶点存在就说明有环,并且是由剩下的顶点组成的环。 例如 有有向图的邻接表如下 0 1 1 0 1 2 2 3 首先 3这个顶点出度为 0 阅读全文
posted @ 2018-12-08 13:06 孤独风中一匹狼 阅读(6733) 评论(0) 推荐(0)
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: 阅读全文
posted @ 2018-07-23 10:22 孤独风中一匹狼 阅读(161) 评论(0) 推荐(0)
摘要:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4 思路: 1.用n 阅读全文
posted @ 2018-07-22 10:06 孤独风中一匹狼 阅读(4506) 评论(0) 推荐(0)
摘要:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 阅读全文
posted @ 2018-07-16 12:46 孤独风中一匹狼 阅读(4464) 评论(0) 推荐(0)
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O 阅读全文
posted @ 2018-07-16 10:36 孤独风中一匹狼 阅读(240) 评论(0) 推荐(0)
摘要:Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum minutes difference between any two time points in the list. Example 1: Input: ["23:59","00:00"] const MaxMinut... 阅读全文
posted @ 2018-05-06 14:31 孤独风中一匹狼 阅读(195) 评论(0) 推荐(0)