刷题学习
文章平均质量分 52
Stu_art
这个作者很懒,什么都没留下…
展开
-
graph 图数据结构
树 和 图 辨析 1 树的父节点和子节点之间是一条路单向可达 2 图的的节点之间存在多条路可达 基本概念 1 顶点 2 边 3 邻居节点:只有一条边连接的顶点 4 度(degree):一个顶点有几条边,就有几度 图的区分 1 无向图:边没有方向 2 有向图 3 权重图 有向图的基本概念 1 入度:多少条边指向该顶点 2 出度:多少条边从这个顶点出发指向其他顶点 EG: 韩:入度为0;出度为2 李:入度为1;出度为1 bishi:入度为2;出度为0 饲:入度为1;出度为1 权重图的基本概念 边上有权重原创 2021-11-24 13:56:23 · 412 阅读 · 0 评论 -
堆 Heap Java 知识点
基本定义 堆就是一种二叉树结构—完全二叉树 完全二叉树: 1 每个父节点,最多只有两个孩子 2 从上到下,从左到右依次填满 堆需要满足的条件: 1 是一个完全二叉树 2 每个节点都大于等于孩子节点(最大堆)或者每个每个节点都小于等于孩子节点(最小堆) 最大堆和最小堆的辨析 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGWFpyA2-1634545889516)(pic22.png)] 根节点:堆顶元素 堆常见操作的时间复杂度 访问 Access X 搜索 Search O原创 2021-10-18 16:48:07 · 295 阅读 · 0 评论 -
树Tree知识点
树的基本概念 描述的是节点之间的父子关系 tips: 成环的结构不可能成为树, 因为无法确定父子关系 重要的名词 1 节点 2 根节点(开始的节点,没有父节点,具有唯一性) 3 叶子节点(没有孩子的节点) 高度、深度、层 概念辨析 1 高度:从叶子向根看,从0开始计数 2 深度:从根向叶子看,从0开始计数 3 层: 从根向叶子看,从1开始计数 二叉树 1 普通二叉树:每个节点最多两个孩子 2 满二叉树:除了叶子节点,每个节点都有左右两个孩子,且所有的叶子节点都在同一层 3 完全二叉树:从树的根节点,从上原创 2021-10-16 16:10:01 · 182 阅读 · 0 评论 -
Java集合 Set学习
特点 1 无序 2 不重复 注重自己独一无二的特性 主要作用 1 检查某一个元素是否存在 2 有无重复元素 Set的种类 1 HashSet 主要使用 2 LinkListSet 3 TreeSet 讲一个元素加入到HashSet过程原理 1 取得元素 2 通过哈希函数得到哈希值 3 通过哈希值在哈希表中寻找,如果表中没有此元素,就直接存入到哈希表中 4 如果有元素,然后进行对比 5 如果已有元素和当前元素相等,则不做操作 6 如果不想等,则发生哈希冲突(使用链表方法解决) 哈希集合的操作的时间复杂度 1原创 2021-10-13 18:53:10 · 60 阅读 · 0 评论 -
Java 哈希表学习-散列表
基础定义 键值对:key:value 例如学号姓名: 1:张三 2:李四 3:王五 查找元素的方式不需要从头遍历到尾,直接通过键(key)来进行查找,时间复杂度低 语言的使用 Java—HashMap python----字典 哈希查找对应元素的机制 哈希碰撞 两个不同的key通过同一个哈希函数,得到相同的内存地址 解决方式:将两个键值对使用链表串起来 各种操作的时间复杂度 1 访问 X 2 搜索(无哈希碰撞) O(1) 3 搜索(有哈希碰撞) O(K) 链表遍历时经过了k个元素 4 插入 O(1) 5原创 2021-10-08 15:27:56 · 114 阅读 · 0 评论 -
Java 零碎基础知识
问号 ?冒号 :条件语句 int i = 0; int x = i>1 ? 0:1; 问号冒号将其分为代码分为三个部分A、B、C A?B:C 如果A为真则执行B,如果为假则执行C 字符串charAt 函数 String 类型的变量使用 指定index,返回该位置上的字符,返回类型为char类型 String 和 StringBuilder 的使用 初始化 StringBuilder str = new StringBuilder(); 增加元素 str.append(1); str.append(原创 2021-09-23 15:36:22 · 91 阅读 · 0 评论 -
Java栈的学习
特点 先进后出,与队列这种数据结构相反,队列是先进先出。 实用例子: 浏览器后退功能 操作的时间复杂度 1 访问栈顶元素 O(1) 2 搜索 O(N) 3 插入 O(1) 入栈 4 删除 O(1) 出栈 Java栈的常用操作 创建栈 Stack<Integer> stack = new Stack<>(); 添加元素 stack.push(1); stack.push(2); stack.push(3); System.out.println(stack.toString());原创 2021-09-20 19:58:00 · 96 阅读 · 0 评论 -
Java 队列学习
队列的特点 先进先出 队列的分类 1 单端队列 只有一个口可以进,一个口可以出 2 双端队列 两个口都可以进, 两个口都可以出 队列数据结构的特点 1 访问O(N) 需要从头到尾遍历一遍 2 搜索O(N) 需要从头到尾遍历一遍 3 插入O(1) 插入只能在队尾插入,不需要遍历,所以时间复杂度为O(1) 4 删除O(1) 删除只能在队头删除,不需要遍历,所以时间复杂度为O(1) tips 队列的底层实现是链表 队列的常见操作 1 创建队列 Queue<Integer> queue = new Li原创 2021-09-17 00:04:42 · 91 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度即为代码的执行次数量级 O(1) 常量数量级的时间复杂度, 没有for循环和while循环 O(N) 常量不看,其中total=0,return total为常量执行次数 只有一层循环,循环的执行次数为N O(logN) 常量不看,其中i=1,return i 为常量执行次数 i=i*2的执行次数为log2(N),舍去2,则最后结果为O(logN) O(M+N) 同理常量次数不看 两个O(N),一个执行M次,一个执行N次 组合之后变成O(M+N), 实际上等同于O(N) O(NlogN)原创 2021-09-08 22:20:39 · 79 阅读 · 0 评论