_莫相逢

导航

2022年6月19日 #

Dijkstra 算法求最短路径

摘要: 以上是一个有向无环图,从V1到V2所花费的代价是2,从V1到V3的代价是3,...,以此类推,求出从V1到其他各个点的最短路径。 Dijkstra思路: 建立两个容器,容器S中装着已经求出最短路径的顶点,初始时只有V1,另外一个容器U装着V1到其他顶点的代价,初始时都为无穷大。 在图中遍历与V1直接 阅读全文

posted @ 2022-06-19 15:46 莫晓风 阅读(93) 评论(0) 推荐(0) 编辑

2019年4月21日 #

LeetCode 102 二叉树的层次遍历

摘要: 题目: 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 解题思路: 层次遍历都知道,可 阅读全文

posted @ 2019-04-21 15:23 莫晓风 阅读(125) 评论(0) 推荐(0) 编辑

LeetCode 98 验证二叉搜索树

摘要: 题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 示例 2: 解题思路: 根据二叉搜索树的定义,我们发现一条规律,如果对该二 阅读全文

posted @ 2019-04-21 09:39 莫晓风 阅读(138) 评论(0) 推荐(0) 编辑

2019年4月19日 #

LeetCode 145 二叉树的后序遍历(非递归)

摘要: 题目: 给定一个二叉树,返回它的 后序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 1、使用一个栈,先把二叉树的右孩子压入,再把左孩子压入。这样在输出时就满足后序要求(先左后右)。 2、当某个节点的左孩子或者右孩子都为NULL时,可以访问。此外记录当前节点p的上一 阅读全文

posted @ 2019-04-19 20:25 莫晓风 阅读(245) 评论(0) 推荐(0) 编辑

LeetCode 160 相交链表

摘要: 题目: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 示例 2: 示例 3: 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅 阅读全文

posted @ 2019-04-19 16:46 莫晓风 阅读(106) 评论(0) 推荐(0) 编辑

LeetCode 2 两数相加

摘要: 题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 解题思路: 逐位扫描 阅读全文

posted @ 2019-04-19 14:44 莫晓风 阅读(113) 评论(0) 推荐(0) 编辑

LeetCode 206 反转链表

摘要: 题目: 反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 解题思路: 1、迭代方法,从前往后扫描一遍,以此改变当前指针p的指向,其中用到三个指针,当前指针p,上一指针last,头指针pHead。 2、递归方法,一层一层的递归到最后一个节点,再以此返回改变指向。 阅读全文

posted @ 2019-04-19 09:47 莫晓风 阅读(94) 评论(0) 推荐(0) 编辑

2019年4月18日 #

LeetCode 148 排序链表

摘要: 题目: 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 示例 2: 解题思路: 可达到O(nlogn)的排序我们知道有三种,堆排、快排、二路归并。 这里由于是链表,堆排和归并都不太容易操作。所以这里我们用二路归并算法。 二路归并有递归的和非递归的,这里单链表, 阅读全文

posted @ 2019-04-18 11:36 莫晓风 阅读(137) 评论(0) 推荐(0) 编辑

2019年4月13日 #

LeetCode 57 插入区间

摘要: 题目: 给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 解题思路: 对于这个示例 [ [1,3], [6,9] ] ,插入的区间可分为以下几种: 1、插入区间的end小于 阅读全文

posted @ 2019-04-13 18:09 莫晓风 阅读(115) 评论(0) 推荐(0) 编辑

LeetCode 56 合并区间

摘要: 题目: 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 示例 2: 解题思路: 按照给出的示例,我们可以发现只要循环一遍,把前后两个区间并列,不可并列就可压到answer中。但实际上题目没有说明给出的集合都是递增的,这样便不可直接循环来做。由此,应该先对这个集合进行排序,使之按照start递 阅读全文

posted @ 2019-04-13 15:28 莫晓风 阅读(136) 评论(0) 推荐(0) 编辑