随笔分类 - 数据结构和算法
摘要:1. BFS 广度优先搜索类似于树的层次遍历过程。它需要借助一个队列来实现。要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1、v2、v3为第二层(即先访问的第一个节点作为第一层,和第一个节点相连的邻接节点作为第二层),v4、v5为第三层,v6为第四层,再逐个遍历每一层的每个顶点。 具体
阅读全文
摘要:1. 概念 并查集(Union Find)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 功能: a. 查找两个元素是否属于同一个集合:isSameSet(A,B) A所在的集合为Set1,B所在的集合为Set2,则返回Set1
阅读全文
摘要:1. 概念 拓扑排序:对于n个节点的有向图G,一个有向边(u, v),那么对节点进行排序后,u在v的前面(如果G中有环存在,那么不能进行拓扑排序)。 可以用dfs(栈)和bfs(队列)来实现拓扑排序。 dfs具体算法:将所有的点设为三种状态:未搜索0,搜索中1,已完成2。对任意一个未搜索节点0的相邻
阅读全文
摘要:简易HashMap import java.util.Objects;//Objects类的equals方法是判断两个对象是否相等。 //在比较两个对象的时候,Object.equals方法容易抛出空指针异常。 public class MyHashMap<K, V> { private class
阅读全文
摘要:1. 题目描述 输入一个二叉树层次遍历的结果,输出这个二叉树最大路径和。路径不一定从根节点开始和叶子节点结束。只要是连续的路径就可以。 如 输入:[-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出:42 2. 代码 首先将一个数组还原成一个二叉树。
阅读全文
摘要:1. 题目描述: 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }
阅读全文
摘要:leetcode234 思路:(1)快慢指针找到链表中点(2)原地反转中点之后的链表(3)比较两段链表的值(4)反转的链表再反转回去 /** * Definition for singly-linked list. * public class ListNode { * int val; * Lis
阅读全文
摘要://表示生产者消费者交互的容器 public class MilkBox { public static int bottles = 0; } //消费者 public class Consumer implements Runnable { private String lock = ""; pu
阅读全文
摘要:采用HashMap加上双向链表可以做到get和put的时间复杂度达到O(1)。map里面的value存的就是双向链表的节点(key,value),是相互连接在一起的。 import java.util.HashMap; //双向链表节点 class dulNode{ int key; int val
阅读全文
摘要:搞得简单一点。主要是heapInsert(往堆里面插入数据),heapify(调整堆)这两个函数。 /** * @Author lyuWalle * @Date 2020/9/16 11:05 * @Version 1.0 * 简单自定义优先级队列,采用ArrayList实现。 * 主要实现: *
阅读全文

浙公网安备 33010602011771号