随笔分类 -  数据结构与算法

摘要:转载:https://www.jianshu.com/p/e530baada558 说bitmap之前,我们要明白数字在内存中的表示,如果说byte用8个二进制位表示,即可以表示个数,每个byte占8位,即每个byte占8行,在内存中这样形象的表示: 而bitmap结构,充分利用了每一行所有的位数, 阅读全文
posted @ 2020-06-21 10:16 ken007 阅读(1540) 评论(1) 推荐(0)
摘要:https://www.cnblogs.com/grenet/p/3145800.html 解决数独问题https://www.jianshu.com/p/93b52c37cc65 阅读全文
posted @ 2020-06-09 23:10 ken007 阅读(116) 评论(0) 推荐(0)
摘要:1 B树 在介绍B+树之前, 先简单的介绍一下B树,这两种数据结构既有相似之处,也有他们的区别,最后,我们也会对比一下这两种数据结构的区别。 1.1 B树概念 B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的 阅读全文
posted @ 2019-10-02 10:26 ken007 阅读(325) 评论(0) 推荐(0)
摘要:求数组中两个元素差的最大值(后面的元素减去前面的元素)O(N)时间复杂度O(1)空间复杂度题目:在数组中找到两个元素,计算后面的元素减去前面的元素的差。求出所有差的最大值。(你可以认为你在炒股票,买入价格和卖出价格就是你的盈利) //数组A[0...n] , 对于0<=i<j<=n, 找出A[j]- 阅读全文
posted @ 2018-04-08 12:11 ken007 阅读(2215) 评论(0) 推荐(1)
摘要:一、首先我们讲讲递归 既然会导致内存泄露如此,那肯定要想办法了,方法很简单,那就是尾递归优化 二、尾递归优化 什么是尾递归: 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾 阅读全文
posted @ 2018-03-24 21:57 ken007 阅读(686) 评论(0) 推荐(0)
摘要:插入排序 特点:stable sort、In-place sort 最优复杂度:当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生O(n^2)的复杂度。 最差复杂度:当输入数组为倒序时,复杂度为O(n^2) 插入排序比较适合用于“少量元素的数组”。 其实插入排序的复杂度和逆序 阅读全文
posted @ 2018-03-21 18:20 ken007 阅读(206) 评论(0) 推荐(0)
摘要:B树 为什么要B树 磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大 阅读全文
posted @ 2018-03-21 15:14 ken007 阅读(1516) 评论(0) 推荐(0)
摘要:二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 先来看一下基本的概念: 第一、二叉查找树(Binary Search Tree)和二叉排序树(Binary Sort Tree)都是一样的。 第二、二叉排序树或者 阅读全文
posted @ 2018-03-21 12:42 ken007 阅读(288) 评论(0) 推荐(0)
摘要:大顶堆为例): 首先根据序列构建一个完全二叉树 在完全二叉树的基础上,从最后一个非叶结点开始调整:比较三个元素的大小–自己,它的左孩子,右孩子。分为三种情况: 自己最大,不用调整 左孩子最大,交换该非叶结点与其左孩子的值,并考察以左孩子为根的子树是否满足大顶堆的要求,不满足递归向下处理 右孩子最大, 阅读全文
posted @ 2018-03-20 21:50 ken007 阅读(223) 评论(0) 推荐(0)
摘要:树、森林和二叉树的转换 树转换为二叉树 (1)加线。在所有兄弟结点之间加一条连线。 (2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。 (3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换 阅读全文
posted @ 2018-03-20 20:23 ken007 阅读(166) 评论(0) 推荐(0)
摘要:树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节点称为根节点;(03) 每一个非根节点有 阅读全文
posted @ 2018-03-20 18:56 ken007 阅读(334) 评论(0) 推荐(0)
摘要:1.获取栈的最小值 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 思考过程 对于push和pop操作来说,都很简单,无论是数组实现栈,还是链表实现栈都很容易。但是唯独min函数不好做。 首先对于栈这个数据结构来说,我们只 阅读全文
posted @ 2018-03-19 18:01 ken007 阅读(2008) 评论(0) 推荐(0)
摘要:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 1. 在 O(1) 时间删除链表节点 Leetcode 237. Delete Node in a Linked List 题目描述:给定单链 阅读全文
posted @ 2018-03-19 16:25 ken007 阅读(286) 评论(0) 推荐(0)