常用数据结构与基本算法博文系列
摘要:本系列主要是回顾线性结构(数组、链表、栈、队列)、树、图等基本数据结构的基础知识,并且简单介绍这些数据结构对应的常用算法。本文主要是本系列的文章目录,后续会逐渐补充相关的博文。 基本数据结构的文章列表 数据结构概述 数据结构--线性表和链表的基础知识 数据结构--栈和队列的基础知识 数据结构--树的
阅读全文
posted @
2020-09-13 15:54
mukekeheart
阅读(372)
推荐(0)
数据结构--线性表和链表的基础知识
摘要:近期准备重新学习一下常用数据结构和基本算法,并计划将这些内容的只是做一个整理和归类,准备慢慢写一个常用数据结构与基本算法的系列博文,博文列表参见:常用数据结构与基本算法博文系列,目前内容还比较少,后续慢慢补充。本文主要内容是介绍 数据结构--线性表和链表的基础知识。 一 线性表概述 1.1 线性表概
阅读全文
posted @
2020-09-13 15:53
mukekeheart
阅读(1131)
推荐(1)
数据结构概述
摘要:近期准备重新学习一下常用数据结构和基本算法,并计划将这些内容的只是做一个整理和归类,准备慢慢写一个常用数据结构与基本算法的系列博文,博文列表参见:常用数据结构与基本算法博文系列,目前内容还比较少,后续慢慢补充。本文主要内容是 数据结构概述。 一 数据结构是什么 数据结构,直白地理解,就是研究数据的存
阅读全文
posted @
2020-09-01 16:44
mukekeheart
阅读(410)
推荐(0)
数据结构--栈和队列基础知识
摘要:近期准备重新学习一下常用数据结构和基本算法,并计划将这些内容的只是做一个整理和归类,准备慢慢写一个常用数据结构与基本算法的系列博文,博文列表参见:常用数据结构与基本算法博文系列,目前内容还比较少,后续慢慢补充。本文主要内容是 数据结构--栈和队列基础知识。 一 概述 栈和队列,严格意义上来说,也属于
阅读全文
posted @
2020-09-01 14:30
mukekeheart
阅读(2141)
推荐(3)
算法——(转)动态规划入门
摘要:转载自:教你彻底学会动态规划——入门篇 1、概述 动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂
阅读全文
posted @
2018-09-17 08:47
mukekeheart
阅读(786)
推荐(1)
魔术师发牌问题和拉丁方阵问题
摘要:魔术师发牌问题 问题描述: 魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示。”魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的
阅读全文
posted @
2016-08-08 11:21
mukekeheart
阅读(273)
推荐(0)
哈夫曼树和哈夫曼编码
摘要:在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有
阅读全文
posted @
2016-08-08 11:03
mukekeheart
阅读(753)
推荐(0)
数据结构中常见经典算法
摘要:华山大师兄 排序:拓扑排序算法 字典序算法 编程珠玑:位图法排序 树:红黑树总结 B+树与B*树小结 B-树小结汇总 平衡二叉树(AVL树)小结 Trie--字典树 图的遍历:深度优先遍历与广度优先遍历 最小生成树:最小生成树-Prim算法和Kruskal算法 最短路径:最短路径—Dijkstra算
阅读全文
posted @
2016-08-07 15:48
mukekeheart
阅读(496)
推荐(0)
数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
摘要:数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树) 二叉排序树、平衡树、红黑树 红黑树 第四篇:一步一图一代码,一定要让你真正彻底明白红黑树 很好
阅读全文
posted @
2016-08-04 10:12
mukekeheart
阅读(227)
推荐(0)
如何求最小三元组距离
摘要:题目描述: 已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,使得组成的三元组距离最小。 三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:Distance = max(|a[i]–b[j]|,|a[i]–c[k]|,|b[j]–c[k]|)
阅读全文
posted @
2016-08-01 20:11
mukekeheart
阅读(1695)
推荐(1)
对两个有序数组进行合并
摘要:问题描述: 数组arr[0...mid-1]和arr[mid..n-1]是各自有序的,对数组arr[0..n-1]的两个有序段进行合并,得到arr[0..n-1]整体。要求空间复杂度为O(1) eg:{1,3,5,7,2,4,6}合并成{1,2,3,4,5,6,7} 思路: 方法一 很显然,看到这个
阅读全文
posted @
2016-08-01 18:59
mukekeheart
阅读(4702)
推荐(0)
连续子数组的最大和问题
摘要:参考自:求连续子数组的最大和 求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为
阅读全文
posted @
2016-08-01 11:08
mukekeheart
阅读(378)
推荐(0)
设计模式的学习
摘要:比较好的博客: 设计模式系列 java常用设计模式 Java开发中的23种设计模式详解(转) 设计模式总结 http://tedyin.me/2016/03/13/singlton-pattern/ 跬步致远——Ai92
阅读全文
posted @
2016-07-29 14:36
mukekeheart
阅读(188)
推荐(0)
二叉树的基本概念和遍历
摘要:一、二叉树的基本概念 平衡二叉树:如果一棵树不为空,并且其中所有的子树都满足各自的左子树与右子树的高度差都不超过1。(空树是平衡二叉树) 搜索二叉树:每棵子树的头节点的值都比各自左子树上的所有节点的值要大,也比各自右子树上的所有节点的值要小。搜索二叉树按照中序遍历得到的序列,一定是从小到大排列的。像
阅读全文
posted @
2016-07-22 11:28
mukekeheart
阅读(1768)
推荐(0)
(转)布隆过滤器的基本原理
摘要:本文参考自:http://www.cnblogs.com/hxsyl/p/4176280.html 看见了海量数据去重,找到停留时间最长的IP等问题,有博友提到了Bloom Filter,我就查了查,不过首先想到的是大叔,下面就先看看大叔的风采。 一、布隆过滤器概念引入 (Bloom Filter)
阅读全文
posted @
2016-07-14 10:56
mukekeheart
阅读(1335)
推荐(0)
判断两个单链表是否相交(有环、无环两种)
摘要:题目描述: 给定两个单链表的头节点head1和head2,如何判断两个链表是否相交?相交的话返回true,不想交的话返回false。 给定两个链表的头结点head1和head2。请返回一个bool值代表它们是否相交。 链表中节点的类型设置如下: 思路: 1、首先判断是否有环, 若两个链表都没有环,则
阅读全文
posted @
2016-07-12 17:37
mukekeheart
阅读(5513)
推荐(1)
KMP算法浅析
摘要:具体参见: KMP算法详解 背景: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。
阅读全文
posted @
2016-07-10 21:01
mukekeheart
阅读(249)
推荐(0)