数据结构
常见数据结构
涵sue
这个作者很懒,什么都没留下…
展开
-
LeetCode207 -- 课程表 -- 拓扑排序
题目描述你这个学期必须选修numCourse门课程,记为0到numCourse-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解释:总共有 2 门课程。学...原创 2020-04-29 12:31:24 · 143 阅读 · 0 评论 -
二叉树的序列化和反序列化
题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。你可以将以下二叉树: ...原创 2020-04-07 16:09:04 · 78 阅读 · 0 评论 -
剑指offer -- 调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路简单粗暴的解法,遍历数组(用count),如果是奇数就往前放(用i),如果是偶数就放在新开的空间里(用j)。package array;import java.util.ArrayList;i...原创 2020-01-30 15:59:52 · 131 阅读 · 0 评论 -
排序 -- 归并
时间复杂度 O(nlogn)package sort;import java.util.Arrays;public class MyMergeSort { public void sort(int[] arr) { int len = arr.length; mergeSort(arr, 0, len - 1); } ...原创 2020-03-24 15:09:34 · 61 阅读 · 0 评论 -
排序 -- 快速排序
快速排序是排序算法中平均时间复杂度为O(nlogn)的一种算法。要学习快速排序,首先要理解的一个重要操作是 Partition。它的基本思想如下所述:Partition 每一次排定一个元素(主元) ,即它就要在数组最终确定的位置上,所以它具有这样的性质:位于它前面的元素都不超过它,位于它后面的元素都大于它。Partition可以用多种方法,这里给出双指针法。(没找到好用的图,再补吧)...原创 2020-02-11 11:23:34 · 60 阅读 · 0 评论 -
数据结构 -- 二叉查找树(Binary Search Tree)
二叉查找树(Binary Search Tree),也称二叉搜索树,二叉排序树。定义如下:要么是一颗空树;要么就是具有如下性质的二叉树:(1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2) 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3) 任意节点的左、右子树也分别为二叉查找树;(4) 没有键值相等的节点。二叉搜索...原创 2020-02-04 12:42:19 · 601 阅读 · 0 评论