数据结构
文章平均质量分 74
YLHang
这个作者很懒,什么都没留下…
展开
-
二叉树的迭代遍历(C语言版本)
写在前面 既然你能搜到这篇文章说明你对二叉树和递归方式的二叉树遍历方式肯定是已经了解了,不然也不会找到这里,那也就不多说,迭代方式的遍历同样也是借助于递归思想的方式实现,但是我们不需要构造递归函数,而是借助于数据结构栈来进行模拟递归的过程,不断进行压栈和弹栈操作,直到栈为空就可以起返回。 由于每个过程我都用到了计算树节点个数的函数,所以这里先贴一下计算树节点个数的代码,这个是用递归版本写的,当然也可以以迭代的方式求,不过为了简单就用递归了 struct TreeNode { int val; struc原创 2020-09-14 22:22:20 · 834 阅读 · 0 评论 -
最长连续序列LeetCode128
题目描述 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。题目来源 示例 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 题解及思路 思路1 题目要求时间复杂度为O(n)。大多数情况下,如果不需要限制时间复杂度的暴力法应该可以过,但是有这个要求,多多少少需要用到数据结构。按照题目的意思也就是找到公差为1的最长子数组。这里用到去重的集合Set,首先遍历一次,把所有的点加入到Set集合。原创 2020-08-28 17:18:16 · 92 阅读 · 0 评论 -
合并K个排序链表
写在前面 写这个是之前听说有很多人猿辅导面试让手撕这道题,不能用循环,这就逼着大家用递归来做。如果换做是我的话肯定也十分困难,因为我之前做的是用迭代做的,没有仔细看递归,劝大家有多法的题一定要多看看,尽量掌握。(庆幸没遇到这个题)今日记录一下。 合并两个有序链表 先别一口吃个大胖子,先从简单的开始,合并两个排序好的链表。来自LeetCode21 题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->原创 2020-08-09 22:54:32 · 282 阅读 · 1 评论 -
课程表(LeetCode两道)题目整理
课程表1 题目描述 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?来源:力扣(LeetCode207)链接:link 方法1 深度优先搜索 题目本质上就是判断有向图中是否存在环。采用邻接表的形式来进行判断判断,分别从每个节点开始深度优先搜索,判断是否存在环路,如果存在直接返回原创 2020-07-12 22:00:16 · 407 阅读 · 0 评论 -
Java七大排序算法(默认升序排列)
Java七大排序算法(默认升序排列)1.冒泡排序(稳定)2.插入排序(稳定)3.选择排序(不稳定)4.计数排序(不稳定)5.快速排序(不稳定)6.归并排序(稳定)7.堆排序(不稳定) 1.冒泡排序(稳定) 属于交换类排序,比较两两相邻的元素,把大的放在右边。注意每一趟过后遍历中的最大元素都会放到最后边,注意遍历范围。这里放入代码 class Solution { public int[] bubblingSort(int[] nums) { if (nums == null || n原创 2020-06-29 16:56:30 · 1254 阅读 · 0 评论 -
Java判断无向图中是否存在环(DFS和并查集)
第一次写博客,不太会用,话不多说 直接上代码 详细可以看注释,无向图判断是否存在环比有向图相对复杂一点 ,需要判断访问的节点的临接表中的节点与父节点是否相同。 /** * @Description:判断无向图是否有环 深度优先遍历 * 需要保存父节点 * @Create 2020-04-03 21:04 * @Email:1173748742@qq.com */ public clas...原创 2020-04-04 21:27:51 · 5045 阅读 · 0 评论