数据结构与算法
文章平均质量分 82
oldhunter686
人傻就要学习
展开
-
leetcoed刷题笔记
1、编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。思路:当字符串数组长度为 0 时则公共前缀为空,直接返回令最长公共前缀 ans 的值为第一个字符串,进行初始化遍历后面的字符串,依次将其与 ans 进行比较,两两找出公共前缀,最终结果即为最长公共前缀如果查原创 2021-02-25 16:07:11 · 290 阅读 · 2 评论 -
数据结构与算法
**数据结构的分类 **线性结构和非线性结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o7ToCwzh-1584535809905)(E:\笔记\图片\1584509957104.png)]二叉树数据结构二叉树[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOtts6U2-1584535809905)(E:\笔记\图片\...原创 2020-09-18 17:34:11 · 274 阅读 · 0 评论 -
java回调函数机制
回调的思想是:类A的a()方法调用类B的b()方法类B的b()方法执行完毕主动调用类A的callback()方法这样一种调用方式组成了上图,也就是一种双向的调用方式。代码示例接下来看一下回调的代码示例,代码模拟的是这样一种场景:老师问学生问题,学生思考完毕回答老师。首先定义一个回调接口,只有一个方法tellAnswer(int answer),即学生思考完毕告诉老师答案:/** * 回调接口,原文出处http://www.cnblogs.com/xrq730/p/6424471.html.转载 2020-07-29 11:13:58 · 129 阅读 · 0 评论 -
平衡二叉树的具体实现
文章参考视频https://www.bilibili.com/video/BV1E4411H73v?p=141平衡二叉树首先是一个排序二叉树。特点如下:创建二叉树的代码如下package 算法.树;public class BinarySortTreeDemo {public static void main(String[] args) {int[] arr = {7, 3, 1...转载 2020-03-28 20:58:33 · 223 阅读 · 0 评论 -
关于赫夫曼编码压缩数据和解压的具体实现
手打不易,有用就点个赞,哈哈。你们可以增加IO类,用来压缩图片和文件玩一下。参考视频https://www.bilibili.com/video/BV1E4411H73v?p=128视频里面老师的代码有些bug,我改正过来了。package 算法.赫夫曼编码的实现;//数据压缩的实现import java.util.*;public class HuffmanCode { ...原创 2020-03-28 01:28:14 · 173 阅读 · 0 评论 -
剑指offer数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size<=...原创 2020-03-26 11:19:01 · 161 阅读 · 1 评论 -
简单判断B树是否是A树的子树
ps:同样是牛客网大佬的答案,借鉴过来学习,初学者就需要多看看别人的代码怎么写的,才能模仿和进步。题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { bool...原创 2020-03-25 11:18:58 · 710 阅读 · 0 评论 -
根据前序遍历和中序遍历重建二叉树(比较简洁易懂的代码分享)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。ps:这个思路是牛客网里面一个大佬的,我觉得很简洁,所以分享给大家。解题思路因为是树的结构,一般都是用递归来实现。用数学归纳法的思想就是,假设最后一步,就是...原创 2020-03-24 21:44:33 · 197 阅读 · 0 评论 -
用一维数组解决八皇后棋盘问题
八皇后问题:在一个8*8的棋盘上放置八个皇后棋子,任意两个皇后不能处于同一行,同一列,或者同一斜列。求出有多少种解法。package 算法.递归回溯解决八皇后问题;public class Queen8 { //定义一个max表示有多少个皇后 int max =8; //用一个一维数组保存皇后存放在二维数组的位置,数字下标表示第几行,值表示第几列 int []...原创 2020-03-21 12:20:00 · 451 阅读 · 0 评论 -
简单的后缀逆波兰计算器,支持加减乘除和括号
文章是个人视频学习笔记,视频是b站尚硅谷的韩顺平老师的算法结构视频地址https://www.bilibili.com/video/av54029771?p=42后缀计算器的关键是,将我们易于理解的中缀表达式,转换成计算机容易理解的后缀表达式,再进行运算中缀转后缀思路如下:逆波兰计算器的计算思路如下:代码如下在这里插入package 算法.栈.逆波兰计算器后缀表达式;impo...原创 2020-03-20 15:46:42 · 306 阅读 · 0 评论 -
关于单链表逆序输出的三种方式
1将链表反转,再遍历输出,不推荐,会打乱链表原有顺序2遍历链表,把值压入一个栈,再把栈的数据输出3用for循环遍历链表,从最后一位开始,逆序输出package 算法.单向链表和双向链表的创建和遍历;import java.util.Stack;public class LinkedListDemo { public static void main(String[] args...原创 2020-03-19 23:08:11 · 3086 阅读 · 1 评论 -
用单选环形链表解决约瑟夫问题
题目:一群人围在一起丢手绢,开始指定从第m个人开始,然后瞬时针数k下,第k个人出列,剩下的人继续从0开始数到k,第k个人再次出列,问,最后一个人是谁?文章思路来自b站 尚硅谷韩顺平老师的算法视频package 算法.单向链表和双向链表的创建和遍历.约瑟夫问题之单向环形链表;public class Josephu { public static void main(String[...原创 2020-03-19 23:00:00 · 125 阅读 · 0 评论 -
中缀表达式计算器
用中缀表达式写一个计算器,可以实现加减乘除的运算。不支持括号基本思路:1通过一个index索引来遍历我们的表达式2如果我们发现是单个数字,就直接入栈否则判断下一位是否还是数字,如果是数字就采用字符串拼接的方式取值3如果是符号位,当符号位为空时,直接入栈如果有符号进行优先级比较4表达式扫描完毕。计算值并且输出一些细节的思路要看代码,有些地方不太好表述很容易有小bug,我也是调试了好...原创 2020-03-19 22:42:21 · 94 阅读 · 0 评论