![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
文章平均质量分 77
一些平时学习的记录
猫不爱学习
励志成为一个优秀的coder的小白,
展开
-
位图法
位图法位图法就是bitmap的缩写,所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。应用场景一、给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中。解法:我们可以申请512MB内存(51210241024(bit)>40亿)一个比特位代表一个值读入40亿个数,设置相应的bit位读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表原创 2020-08-19 21:05:06 · 1076 阅读 · 0 评论 -
你真的了解Map吗?
目录Map常用方法:哈希表(HashTable)哈希冲突什么是哈希冲突?冲突避免解决冲突冲突严重时的解决办法TreeMap和HashMapHashMap总结及其解读其底层源码(JDK1.8)**1.初始容量为16****2.HashMap的最大容量为2^30****4.何时链表和红黑树相互转化**5、HashMap桶中放置的节点---该节点是一个单链表的结构哈希函数扩容机制MapMap是...原创 2020-05-02 12:53:43 · 1626 阅读 · 0 评论 -
set的总结
目录Set特点常用方法它的两个实现类HashSet、TreeSetHashSet特点TreeSet特点LinkedHashSet(了解)HashSet和TreeSet对比Setpublic interface Set<E> extends Collection<E>特点1.Set是继承自Collection的一个接口类2. Set中只存储了key,并且要求k...原创 2020-05-01 00:01:55 · 332 阅读 · 0 评论 -
二叉搜索树知道吗?自己实现一下,并分析一下(腾讯面试题)
目录二叉搜索树概念操作及实现查找:插入删除实现性能分析二叉搜索树概念int[] arr={6,8,4,5,7,3,2};二叉搜索树又叫二叉排序树或者是一棵空树,或者具有以下特征:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别时二叉搜索树中序遍历结果有序操作及实现查找: bool...原创 2020-04-29 15:53:22 · 243 阅读 · 0 评论 -
排序的总结
目录标题排序算法基于比较的七大排序插入排序直接插入排序二分插入排序:由于数据往有序区间插入,故可以采用希尔排序选择排序直接选择排序双向选择排序冒泡排序堆排序快速排序原理:归并排序排序算法基于比较的七大排序插入排序直接插入排序原理:将区间分为有序和无序的两个部分,每次取无序区间第一个元素依次与有序区间的值比较,如果该值key小于有序区间的数,有序区间的数往后移,继续往前找,选择合适的位置...原创 2020-04-11 22:42:57 · 164 阅读 · 0 评论 -
优先级队列(堆)
优先级队列概念集合框架里的 PriorityQueue特性常用方法优先级队列的模拟实现堆的基本概念:应用场景top-K问题概念操作的数据带有优先级,一般出队列时,可能需要优先级高的元素出队集合框架里的 PriorityQueueJava集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,Pr...原创 2020-03-22 23:15:38 · 140 阅读 · 0 评论 -
树和二叉树
及原创 2020-03-14 00:50:59 · 117 阅读 · 0 评论 -
ArrayList,LinkedList
ArrayList基本介绍1、Arraylist是一个能够进行扩容的动态数组,但是和数组又不太一样,继承了AbstractList,实现了List、RandomAccess, Cloneable, java.io.Serializable。2、...原创 2020-01-05 16:32:54 · 161 阅读 · 0 评论 -
用栈实现队列
使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1)queue.push(2); queue.peek(); // 返回 1queue.pop()...原创 2020-01-05 01:37:07 · 68 阅读 · 0 评论 -
用队列实现栈
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。。class MyStack { private...原创 2020-01-05 01:05:58 · 70 阅读 · 0 评论 -
不带头结点的双向链表的操作
结构特点class DListNode { public int val; public DListNode pre; public DListNode next; public DListNode(int val) { this.val=val; }}class DoubleList { public DListNode h...原创 2019-11-09 22:40:55 · 937 阅读 · 0 评论 -
不带头结点的非循环单链表
/** * @author :Administrator. * @date :2019/11/2 0002 * @time:17:17 *//*以节点为单位存储,不支持随机访问所有:1.任意位置插入删除时间复杂度为O(1) 2.没有增容问题,插入一个开辟一个空间。不带头结点的非循环单链表 */class ListNode {//节点类 public int val; ...原创 2019-11-03 21:38:27 · 172 阅读 · 0 评论 -
递归
/** * java.lang.Stack.overLoad 栈溢出异常 * 递归:递归一般都在栈上进行的,每调用一次函数,都会在展上开辟一块内存空间。 * 栈内存1M/2M,先进后出。 * 1、递归的本质:将大问题化解成小问题 * 2、算法:自己调用自己,有一个趋近于终止的条件 * 3、如果对于终止条件找的有错误的话,就会发生栈溢出现象 * 4、有递...原创 2019-10-16 23:42:58 · 72 阅读 · 0 评论 -
递归的几个经典题目
一、递归所谓递归需要满足:1.自己调用自己。2.有一个趋近于终止条件二、例题1.求n个斐波那契数#include<stdio.h> int Fib(int n) { int f1 = 1; int f2 = 1; int f3 = 0; int i = 0; for (i = 3; i <= n; i++) { f3 = f1 + f2...原创 2019-09-15 23:01:00 · 5020 阅读 · 0 评论