- 博客(17)
- 收藏
- 关注
原创 属性基加密仿真及代码实现(CP-ABE)论文:Ciphertext-Policy Attribute-Based Encryption
属性基加密仿真及代码实现(CP-ABE)论文:Ciphertext-Policy Attribute-Based Encryption,基于访问树的属性基加密Java实现
2022-07-26 17:26:34 3475 17
原创 Java算法体系学习(九)二叉树的递归套路(搜索二叉树的判断、满二叉树的判断、平衡二叉树的判断、Morris中序遍历)
文章目录七、二叉树的递归套路1、判断一个树是不是平衡二叉树2、判断一个树是不是搜索二叉树2.1 非递归的中序遍历判断2.2 二叉树的递归套路2.3 Morris中序遍历3、判断一颗树是不是满树七、二叉树的递归套路二叉树的递归套路就是在递归遍历过程中,对于每一个节点,看能够给左树和右树分别要到什么信息,然后加工出自己的信息,层层递归,最后解出问题。适用于只需要自己的左孩子和右孩子的信息就能加工出自己信息的问题,不必去深究左右子树的详细信息。套路,看需要什么信息,就建一个信息类,然后遍历每一个节点,遇
2022-01-13 23:07:51 234
原创 Java算法体系学习(八)二叉树的相关问题求解(树的最大宽度,完全二叉树的判断,中序遍历的后继节点,多叉树与二叉树的转换,折纸问题)
文章目录5、求树的最大宽度6、折纸问题(二叉树思想启蒙)7、判断一颗树是不是完全二叉树8、多叉树与二叉树的互换(需要理解递归过程)8.1 多叉树转二叉树8.2 二叉树转多叉树9、给定一个二叉树节点,其中节点指针还包括它的父指针,寻找它中序遍历情况下的下一个节点10、证明先序遍历x的左边和后序遍历x的右边的交集仅仅是x的祖先节点5、求树的最大宽度思路:在层序遍历的基础上,多用三个变量,一个记录当前层的最后一个位置,一个记录下一层的最后一个位置,一个记录当前层的宽度,这样每层的结束时机遍历完都知道。每次遍
2022-01-12 21:47:18 236
原创 Java算法体系学习(七)二叉树的遍历递归和非递归实现(先序,中序,后序,层序),序列化和反序列化
文章目录六、二叉树1、二叉树的遍历递归实现(先序,中序,后续)2、二叉树的遍历非递归实现(先序,中序,后续)2.1 先序2.2 后序2.3 中序3、二叉树的层序遍历4 、二叉树的序列化与反序列化4.1 先序的序列化与反序列化4.2 层序的序列化与反序列化六、二叉树二叉树是一种树形结构,树种的每一个位置称为节点,每个节点储存它的值以及它左孩子的引用和右孩子的引用方便起见,二叉树的结构就不用泛型进行实现,直接用整型实现1、二叉树的遍历递归实现(先序,中序,后续)package tree;pub
2022-01-11 18:37:50 451
原创 Java算法体系学习(六)链表的相关面试题(复制链表、找中点、快慢指针、寻找有环链表的入环节点、求两个链表的交点、回文链表)
文章目录五、链表的面试题1、快慢指针1.1 给定一个链表头节点,找到链表的中点位置1.2 给定一个链表的头结点,判断是否为回文结构2、链表复制问题3、判断两个有环或者无环链表是否相交,如果有就返回第一个相交节点,如果没有则返回null1. 先判断一个链表是否有环,如果有环就返回第一个入环节点,如果没有就返回null2、判断两个无环链表是否相交3. 判断两个有环链表是否相交4、整合五、链表的面试题对于笔试,不用在意空间复杂度,一切为了时间复杂度对于笔试,时间复杂度放在第一位,一定找到空间最优的方法笔
2022-01-07 13:32:42 397
原创 Java算法体系学习(五)堆的应用之最大线段重合问题
最大线段重合问题给定很多线段,每个线段有两个整数[begin,end],表示一条线段的起始位置和结束位置(end大于begin且都非负)规定:重合区域必须大于等于1:例如[1,4]和[4,5]就不算重合输入一个二维数组,数组的每个元素是一个包含两个元素的数组,分别为每个线段begin和end返回线段最多重合区域中线段的个数例如 arr = [[1,3],[2,4],[4,8]]返回2,因为在[2,3]这个范围内有2个连段重合思路:先生成一个线段的类,包含begin和end两个数据根据输
2022-01-03 21:46:30 561
原创 Java算法体系学习(四)堆(大根堆、小根堆、堆排序、加强堆)
文章目录四、堆、改进堆、对排序及其应用1、堆和完全二叉树2、用数组实现大根堆3、堆排序4、加强堆(小根堆)四、堆、改进堆、对排序及其应用1、堆和完全二叉树堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。大根堆:根节点的值不小于叶子节点的值,所有子树都是这样小根堆:根节点的值不大于叶子节点的值,所有子树都是这样完全二叉树一棵深度为k的有n个结点的二
2021-12-31 21:31:33 710
原创 Java算法体系学习(三)归并排序及其应用(求小和、逆序对等)
文章目录三、归并排序及其应用1、归并排序递归实现2、求小和2.1 两层for循环,O(n2)时间复杂度2.2 通过归并求小和O(N*log2N)3、逆序对4、将逆序对的定义改为i和j为下表,若i < j 时,arr[i] > 2 *arr[j] 就称这是一个逆序对,寻找所有逆序对三、归并排序及其应用1、归并排序递归实现假设桌子上有两沓顺序排好的手牌,每次取两边较小的一个,这样最后的手牌总体就是有序的。归并排序就是这样的思想,假设数组分为左右两部分别有序,新建立一个数组,每次取较小的数放入
2021-12-30 22:09:15 330
原创 Java算法体系学习(二)几种基本的数据结构和应用(链表反转、栈模拟队列、队列模拟栈、最小栈等)
文章目录二、一些基本的数据结构及操作1、链表数据结构2、对一个链表进行翻转3、给定一个值,删除链表中与该值相同的所有节点4、用数组实现栈5、用已有栈结构实现pop、push、getMin都是常数的操作6、用数组实现队列7、用队列实现栈8、用栈实现队列9、Master公式(计算递归时间复杂度)10、哈希表和有序表10.1 哈希表10.2 有序表二、一些基本的数据结构及操作1、链表数据结构包括一个数值域和指向下一个节点的引用package list;/** * 单向链表,包括一个value域和
2021-12-29 22:45:49 411
原创 Java算法体系学习(一)异或运算及其在题目中应用技巧
文章目录一、异或及相关题目1、不使用额外变量交换数组中两个位置元素数2、一个数组中一个数出现了奇数次,剩下数都出现了偶数次,找到并打印3、给定一个整型的数,提前二进制下最右边的14、一个数组中两种数字出现了奇数次,其余都出现了偶数次,找到并打印这个数5、一个数组中有一个数出现k次,其他数出现了M次(K < M,M > 1,O(N))一、异或及相关题目异或:一种二进制运算,对应位相同为0,不同为10 ^ N = 0N ^ N = 01 ^ N = !N(a ^ b) ^ c = a
2021-12-28 18:42:59 223
原创 算法之异或相关题目
文章目录算法之异或1、不使用额外变量交换两个数2、一个数组中一个数出现了奇数次,剩下数都出现了偶数次,找到并打印3、提取一个整形最右边的14、一个数组中两种数字出现了奇数次,其余都出现了偶数次,找到并打印这个数5、一个数组中有一个数出现k次,其他数出现了M次(K < M,M > 1,O(N))算法之异或0 ^ N = 0N ^ N = 01 ^ N = 1(a ^ b) ^ c = a ^ (b ^ c)a ^ b = b ^ a1、不使用额外变量交换两个数 /**
2021-11-02 23:29:42 144
原创 Springcloud整合zookeeper问题记录
Springcloud整合zookeeper问题记录1、Zookeeper版本冲突问题引入Zookeeper的Springcloud整合包并排除自带的zookeeper查看自己系统装的zookeeper版本并引入依赖,这里以3.4.10为例2.引入zookeeper后要排除slf4j,如上图,不然会日志冲突报错...
2021-10-26 18:47:54 184 1
原创 Java设计模式(一)单例模式
一、单例模式概述1、基本介绍单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。在整个程序的运行过程中,所有该类的引用都指向同一个实例。特点:整个程序运行过程中只有一个实例。类必须在内部创建自己的实例。该类必须提供一个公共方法供其它类
2021-10-19 15:29:29 72
原创 JDBC学习(二)连接数据库的几种方式
二、连接数据库的几种方式1、几个关于JDBC类的介绍1、Driver及其实现类java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。java.sql.DriverManager驱动管理类,在程序中我们不需要直接去访问实现了 Driver 接口的类,可以由由驱动程序管理器类去调用这些Driver实现。Oracle的驱动:oracle.jdbc.driver.OracleDrivermySql的驱动: com.
2021-10-18 19:51:43 433
原创 JDBC学习(一)JDBC概述
一、JDBC概述1、数据的持久化持久化(persistence):把数据保存在可掉电式存储的设备(非易失性存储器)中可供以后使用。通常来说就是把内存中数据存储在磁盘中加以“固化”,而其中采用最多的实现过程就是通过各种关系数据库完成。2、Java的数据存储技术原生JDBC直接与数据库交互。第三方框架,如MyBatis、Hibernate等,这些都是原生的JDBC上加以封装,方便开发者的操作。3、JDBC介绍1、什么是JDBCJDBC(Java Database Connectivit
2021-10-18 13:07:15 85
原创 Java算法学习笔记一选择排序
文章目录前言一、排序前的一些通用操作1. 定义一个需要排序的类。2.封装一些通用的方法二、选择排序1.排序思想2.代码实现3.算法分析1外循环2内循环3复杂度1.时间2.空间三、总结1运行时间与输入无关2数据移动最少前言 这里是为了记录算法学习中的一些笔记和心得,方便查阅和交流。一、排序前的一些通用操作在具体的排序算法前先将一些通用的操作封装为方法,方便后面的调用。1. 定义一个需要排序的类。这里要求类实现Comparable接口,重写compareTo方法,类的成员变量可以根据需要定义,后
2021-08-24 11:13:12 92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人