算法数据结构
文章平均质量分 90
Red_Dragon_
加油(ง •̀_•́)ง
展开
-
LeetCode#206:反转链表之递归实现
不废话,直入主题(我是个很直接的人):已知单链表,求反转:1->2->3->4->5->null期望效果:null<-1<-2<-3<-4<-5答题模版:/** * Definition for singly-linked list. * public class ListNode { * int val; ...原创 2019-12-25 15:47:02 · 317 阅读 · 0 评论 -
AVL树
概念当按顺序往二分搜索树中添加元素时,其会退化成链表,为了让树结构能够有自平衡性,科学家们定义了一种新的平衡树——AVL树,名字取自几个科学家姓名的首字母。AVL树的一些基本特性:第一点,满足二分搜索树所有性质;第二点,带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。感性认识如下演算:已知10 9 6数列 ,插入一个4;已知10 9 6数列,以10为轴...原创 2019-12-02 14:43:10 · 271 阅读 · 0 评论 -
LeetCode#237:删除链表中的节点
文章目录题干解题思考来源题干请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9]示例1输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例...原创 2019-11-26 11:30:26 · 254 阅读 · 0 评论 -
数据结构-BST树(2)-中序遍历找后继节点
1.前言前驱后继节点是针对的是树的三种遍历模式下各个节点迭代的顺序。也就是说前中后序三种遍历方式都有各自的前驱后继节点找法。本文只讨论以BST树以中序遍历找后继节点为例当做一个入门,更多相关的知识请自行google。2.如何寻找后继节点?2.0:这个树: 50 / \ 29 77 / \ ...原创 2019-02-26 16:11:31 · 1824 阅读 · 3 评论 -
数据结构-BST树(3)-bst的删除任意元素算法
文章目录1.前言2.bst树的删除操作2.1.没有子节点2.2.有一个子节点2.3.有2个子节点3.Demo1.前言通过上一篇的学习,我们知道bst树的插入操作和遍历等操作;当我们按照如下顺序插入一堆数字时:50;29;8;2;5;4;3;44;77;82;10;呈现出来的树结构如下: 50 / \ 29 7...原创 2019-02-27 14:45:31 · 943 阅读 · 0 评论 -
算法—时间复杂度
附录log对数:等差数列什么是等差数列?一般地,如果一个数列从第2项起,后一项与它的前一项的差等于同一个常数,那麽这个数列就叫做等差数列。 这个常数叫做等差数列的公差,公差通常用字母d表示。例1:初识。 - {1,3,5,7,9} 公差为2 - {5,15,25,35,45} 公差为10 - {2,68,134,200,266} 公差为66 - {5...原创 2018-11-23 00:23:58 · 36987 阅读 · 11 评论 -
数据结构-BST树(1)-入门,遍历,节点添加
1.什么是BST树Bst树又名二分搜索树,binary search tree,它是遵循一定规律的二叉树;1.二分搜索树是二叉树;2.二分搜索树每个节点的值:a.大于其左子树所有节点的值;b.小于其右子树所有节点的值;3.每一棵子树也是二分搜索树;如图:就是说每往一个根节点添加元素时,左孩子要比根节点小,右孩子要比根节点大,不允许元素重复(可选项);2.手写一个基本的BST...原创 2018-11-27 05:02:29 · 1704 阅读 · 0 评论 -
Deqeue&ArrayDeque
1.什么是DeqeueDeque的含义是“double ended queue”,双端队列,传统队列是F1FO,操作受限,而这个队列可以双端进出,比较灵活。PPS:双端队列不同于环形队列,这俩者我最开始搞混了,环形队列是首尾相连,有tail和head标记,入队一个tail后移一位,出队一个head后移一位。它继承自Queue的(注意这儿是接口继承接口);public interface D...原创 2018-11-01 16:27:09 · 844 阅读 · 0 评论 -
队列、堆栈与数组、链表的关系与区分
本文转自:https://www.cnblogs.com/zhishan/p/3207932.html首先,明确两个概念:数据结构与数据存储结构!数据结构:是指相互之间存在一种或多种特定关系的数据元素的 集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱 是一种树形的逻辑结构!(初学数据结构的时候很不...转载 2018-10-31 13:56:01 · 1162 阅读 · 0 评论 -
近期最少使用算法
尊重他人的劳动成果,本文转自:https://www.cnblogs.com/work115/p/5585341.html LRU是Least Recently Used 近期最少使用算法1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1...转载 2017-11-27 17:43:01 · 4225 阅读 · 0 评论 -
算法—快速排序
http://developer.51cto.com/art/201403/430986.htm原创 2018-08-27 13:42:16 · 262 阅读 · 0 评论 -
算法—冒泡排序,选择排序
冒泡排序理解冒泡排序比较简单,俩层循环,第一层循环决定起始位置,第二层循环从起始位置开始遍历,到数组尾部,其间对比相邻俩个元素,根据升序或者降序需求比较值并进行兑换。不啰嗦了,直接上代码。代码 int[] array = {6, 3, 77, 11, 2, 99, 6}; for (int i = 0; i < array.leng...原创 2018-08-17 14:46:30 · 2807 阅读 · 2 评论 -
算法—希尔排序
概念希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰...原创 2018-08-15 09:36:25 · 364 阅读 · 0 评论 -
算法—插入排序
大致看一看![](https://wx1.sinaimg.cn/ mw1024/0061ejqJgy1fu3l9eoaebg30le0k27fm.gif)理解相信各位看了这个图,虽然从感官上了解了它的机制,但是要将其搞成程序代码,我们还需要更细致的去分析这个问题。在此之前,刘老大已经分析过一波了,各位可以去看下:http://liuwangshu.cn/algorithm...原创 2018-08-14 09:41:27 · 300 阅读 · 0 评论