![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
文章平均质量分 87
鱼爱吃柚子
大三在校,努力,加油!
展开
-
剑指offer32-36
你未必出类拔萃,但一定与众不同剑指offer 32-36文章目录剑指offer 32-36题32 从上到下打印二叉树题33 二叉搜索树的后序遍历序列题34 二叉树中和为某一值的路径题35 复杂链表的复制题36 二叉搜索树和双向链表题32 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,2.原创 2021-07-19 21:04:44 · 79 阅读 · 1 评论 -
剑指offer27-31
你未必出类拔萃,但一定与众不同剑指offer27-31文章目录剑指offer27-31题27 二叉树的镜像题28 对称的二叉树题29 顺时针打印矩阵题 30 包含min函数的栈题31 栈的压入弹出序列题27 二叉树的镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4/ 2 7/ \ / 1 3 6 9镜像输出: 4/ 7 2/ \ / 9 6 3 1特判:如果root为空,返回空把roo.原创 2021-07-18 18:16:14 · 70 阅读 · 1 评论 -
剑指offer22 - 26
你未必出类拔萃,但一定与众不同剑指offer 22 - 31文章目录剑指offer 22 - 31题22 链表中倒数第k个节点题23 二叉搜索树的后序遍历序列题24 反转链表题 25 合并两个排序的链表题26 树的子结构题22 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。.原创 2021-07-17 18:02:13 · 102 阅读 · 2 评论 -
剑指 Offer17-21
你未必出类拔萃,但一定与众不同剑指 Offer 17-21文章目录剑指 Offer 17-21剑指 Offer 17. 打印从1到最大的n位数字符串模拟数字加法(解决大数问题)剑指 Offer 18. 删除链表的节点剑指 Offer 19. 正则表达式匹配剑指 Offer 20. 表示数值的字符串剑指 Offer 21. 调整数组顺序使奇数位于偶数前面剑指 Offer 17. 打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3.原创 2021-07-16 12:27:06 · 135 阅读 · 3 评论 -
剑指offer12-16
你未必出类拔萃,但一定与众不同剑指offer 12-16文章目录剑指offer 12-16题12 矩阵中的路径题13 机器人的运动范围题14 剪绳子题15 二进制中1的个数题16 数值的整数次方题12 矩阵中的路径给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许.原创 2021-07-15 17:15:50 · 113 阅读 · 0 评论 -
剑指offer-7题到12题
你未必出类拔萃,但一定与众不同剑指offer文章目录剑指offer题7 重建二叉树题8 二叉树的下一个节点题9 两个栈实现队列题10 斐波那契数列题11旋转数组的最小数字题7 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof二叉树的前序遍历 根左右 .原创 2021-07-14 17:20:21 · 70 阅读 · 0 评论 -
剑指offer-2题到6题
你未必出类拔萃,但一定与众不同剑指offer文章目录剑指offer题2 实现Singleton模式不好解法1:只适用于单线程环境不好解法2:虽然在多线程环境中工作,但效率不高可行解法3:加同步锁前后两次判断实例是否存在推荐解法4 使⽤类的内部类(线程安全)题3 数组中重复的数字题4二维数组中的查找解法1 暴力递归解法二 线性查找题5 替换空格解法一 调用库函数解法二 暴力循环法题6 从尾到头打印链表解法1 利用栈来打印解法二 反转链表后再遍历题2 实现Singleton模式不好解法1:只适用.原创 2021-07-13 10:11:54 · 104 阅读 · 4 评论 -
Java数据结构(14)----哈希表(基本实现)
哈希表基本概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。一般想法:出自Java数据结构书籍理想的散列表数据结构只不过是一个包含原创 2020-05-24 10:34:11 · 206 阅读 · 0 评论 -
Java数据结构(13)----希尔排序
希尔排序希尔排序是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。基本思想先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量 =1原创 2020-05-21 11:43:38 · 163 阅读 · 0 评论 -
Java数据结构(12)----插入排序
插入排序插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动基本思想插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位原创 2020-05-18 14:32:07 · 259 阅读 · 1 评论 -
Java数据结构(11)----选择排序
选择排序思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。假设有一个数组原始数组第一轮排序第二轮排序第三轮排序第四轮排序第五轮排序代码如下:public static void selectSort(int[] array) { for(int i = 0;i<array.length-1;i++) { int index = i原创 2020-05-17 10:24:31 · 89 阅读 · 0 评论 -
Java数据结构(10)----冒泡排序
冒泡排序先上代码public static void sort(int[] array) { for(int i = 0;i<array.length-1;i++) { for(int j = i+1;j<array.length;j++) { if(array[i]>array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } }原创 2020-05-17 09:51:55 · 117 阅读 · 0 评论 -
算法基础4:求解杨辉三角m层的第n个元素(递归)
进行视频j学习的时候发现了一个题目 是这样的先上源代码public class Demo6 { public static void main(String[] args) { int level = 5; for(int i=0; i<=level; i++) { System.out.print(f(level,i)+" "); } } private...原创 2020-03-09 21:44:48 · 376 阅读 · 0 评论 -
算法基础3:反转串(递归实现)
程序源代码:public class Demo4 { public static void main(String[] args) { String string = f("abcde"); System.out.println(string); } //递归求解 private static String f(String string) { if(string.len...原创 2020-03-09 20:50:06 · 109 阅读 · 0 评论 -
算法基础2:求abc的全排列
算法基础:求abc的全排列有几种方式采用递归的方式,对abc的排列进行解析先上代码块:public class Demo2 { public static void main(String[] args){ //toCharArray()将字符串对象中的字符转换为一个字符数组。 char[] data = "ABC".toCharArray(); f(data,0); ...原创 2020-03-08 18:16:35 · 941 阅读 · 0 评论 -
算法基础1:在n球中任意取出m个不放回
问题:从n个球中取出m个球(不放回)先上递归求法的代码:public class Demo1 { public static void main(String[] args) { int k = f(3,2); System.out.println(k); } private static int f(int i, int j) { if(i<j) return...原创 2020-03-08 17:46:59 · 1168 阅读 · 0 评论