自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 PHP错误类型

在PHP7之后,出现了一个异常与错误通用的接口Throwable,Exception类与Error类都实现了该接口,导致Error类或Error类的派生类的错误对象(大部分FatelError,而之前三类错误不变)也可以像Exception一样被捕获(2种捕获方法1、try/catch2、set_exception_handler())设置默认的异常处理程序,有try/catch捕获的话这个函数就不会执行,反之就会执行,而且执行的话,脚本将不会继续执行发生异常的后一行代码,程序马上中止。...

2022-07-18 09:31:30 1031 1

原创 Leetcode 2: 两数相加

LeetCode2: 两数相加题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.题目分析https://leetcode-cn.com/problems/add-two-numbers

2021-07-26 15:39:49 197

原创 Leetcode1: 两数之和

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器MyISAM在叶子节点中存储的是数据的索引,而InnoDB存储的是数据。MyISAM可以将

2021-07-19 16:38:41 521

原创 Leetcode:求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。

LeetCode 牛客网二叉树题目描述求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。题目分析方法一递归,若为空树返回0;若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)若右子树为空,则返回左子树的最小深度+1;若左右子树均不为空,则取左、右子树最小深度的较小值,+1;下面是Java代码import java.util.*;/* * public class TreeNode { * int val = 0;

2021-02-19 09:12:48 361

原创 面试必考真题-算法篇:山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。

面试必考真题-算法篇 牛客网数组题目描述山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞。题目分析由于是找到最后一个山峰,所以这道题注意要从后向前进行遍历,首先找到的那个山峰即是最后一个山峰。如果遍历结束依然没有找到山峰,证明这是一个递减的数组,所以山峰是第一个元素,即索引为0的位置。下面是Java代码import java.ut

2021-01-15 11:08:00 1608 1

原创 面试必考真题-算法篇:给定一个单链表,请设定一个函数,讲链表的奇数位节点和偶数位节点分别放在一起,重排后输出。

面试必考真题-算法篇 牛客网链表 排序题目描述给定一个单链表,请设定一个函数,讲链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。题目分析下面是Java代码import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * 代码中的类名、方法名、参

2021-01-14 14:06:45 730

原创 面试必考真题-算法篇:给定一个链表,请判断该链表是否为回文结构。

面试必考真题-算法篇 牛客网链表 双指针题目描述给定一个链表,请判断该链表是否为回文结构。题目分析利用双向队列。首先将链表全部加入队列中,之后,将链表头尾同时出队,如果不相等,则不是回文结构。下面是Java代码import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** *

2021-01-13 20:48:31 433

原创 面试必考真题-算法篇:实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

面试必考真题-算法篇 牛客网栈题目描述实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。输入返回值[[1,3],[1,2],[1,1],[3],[2],[3]][1,2]题目分析操作类似剑指offer22题,直接利用两个栈,一个用于正常存储,另一个用于最小值存储即可。下面是Java代码import java.util.*;import java.util.Stack;public class Solution { /**

2020-12-24 12:44:47 275

原创 面试必考真题-算法篇:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。

面试必考真题-算法篇 牛客网树 DFS题目描述给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。这个路径的开始节点和结束节点可以是二叉树中的任意节点题目分析这道题是求树的路径和的题目,不过和平常不同的是这里的路径不仅可以从根到某一个结点,而且路径可以从左子树某一个结点,然后到达右子树的结点,就像题目中所说的可以起始和终结于任何结点。在这里树没有被看成有向图,而是被当成无向图来寻找路径。因为这个路径的灵活性,我们需要对递归返回值进行一些调整,而不是通常的返回要求的结果。在这里,函数的返

2020-12-23 18:15:12 746

原创 面试必考真题-算法篇:从0,1,2,...,n这n+1个数中选择n个数,组成有序数组,找出这n个数中缺失的那个数,要求O(n)尽可能小。

面试必考真题-算法篇 牛客网位运算 数组 数学题目描述从0,1,2,…,n这n+1个数中选择n个数,组成有序数组,找出这n个数中缺失的那个数,要求O(n)尽可能小。示例:输入返回值[0,1,2,3,4,5,7]6题目分析:因为是有序数组,所以采用二分法进行查找。同时,因为他的元素与其序号相同,所以可以利用序号来进行判断,当找到序号和当前元素值不同的时候,即找到了这个缺失数字。下面是Java代码import java.util.*;public class Sol

2020-12-22 20:39:36 1094

原创 面试必考真题-算法篇:给定一个无序数组arr,找到数组中未出现的最小正整数。

面试必考真题-算法篇 牛客网数组题目描述给定一个无序数组arr,找到数组中未出现的最小正整数例如arr = [-1, 2, 3, 4]。返回1arr = [1, 2, 3, 4]。返回5[要求]时间复杂度为O(n),空间复杂度为O(1)题目分析原地哈希,把数组中取值在1到n的数放到对应的位置,比如1放到0的位置,2放到1的位置,……n放到n-1的位置,然后遍历重置后的数组,若i下标位置不是i+1,则i+1就是那个最小的正整数,若1到n位置都对的上,说明最小的正整数是n+1。下面是Java

2020-12-18 13:09:38 1831

原创 面试必考真题-算法篇:给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻

面试必考真题-算法篇 牛客网dfs bfs 搜索题目描述给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。题目分析:同样的代码在牛客上会报栈溢出错误!!但是在leetcode上可以AC!!同样的代码在牛客上会报栈溢出错误!!但是在leetcode上可以AC!!同样的代码在牛客上会报栈溢出错误!!但是在leetcode上可以AC!!利用dfs进行遍历,当找到陆地之后

2020-12-17 11:25:46 5092

原创 面试必考真题-算法篇:请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图

面试必考真题-算法篇 牛客网树题目描述请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图题目分析:首先利用二叉树的前序和中序遍历结果重建该二叉树,之后利用层次遍历,找到每层最右侧的节点,同时将其加入ArrayList中,最后转换为int数组即可。下面是Java代码import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 求二叉树

2020-12-16 17:23:03 724

原创 面试必考真题-算法篇:合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。

面试必考真题-算法篇 牛客网堆 链表 分治题目描述合并 k 个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。题目分析利用优先队列实现,因为要将链表按照从小到大的顺序合并,所以优先队列实现按照最小元素优先出队原则修改比较器。之后操作按照首先将链表数组的每个链表的头结点加入队列(由于链表是有序的且是从小到大排序,所以只需要将每个链表的头节点入队即可。)。之后再出队,出队之后,将出队的节点的下一个节点加入优先队列,如此反复直至队列中为空。下面是Java代码/** * Defini

2020-12-15 11:53:04 400

原创 面试必考真题-算法篇:将一个链表m 位置到 n 位置之间的区间反转,要求时间复杂度 O(N),空间复杂度O(1) 。

面试必考真题-算法篇 牛客网链表题目描述将一个链表m 位置到 n 位置之间的区间反转,要求时间复杂度 O(N),空间复杂度O(1) 。例如:给出的链表为1→2→3→4→5→NULL,返回1→4→3→2→5→NULL。注意:给出的 m,n满足以下条件:链表长度1≤m≤n≤链表长度。题目分析:将链表分成三段,第一段长度小于m,第二段在m,n之间,第三段在n之后。将第二段进行翻转然后再次拼接这三段链表即可。下面是Java代码import java.util.*;/* * public

2020-12-11 19:52:41 569

原创 面试必考真题-算法篇:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。

面试必考真题-算法篇 牛客网位运算题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。备注:M是32位整数,2<=N<=16.题目分析:因为转化的进制是在2进制到16进制之间,所以单纯的除法无法满足需求,所以利用字符串来进行进制转换,转换完成后进行字符串翻转即可。同时,要注意负数的情况,不然会出现死循环。下面是Java代码import java.util.*;public class Solution { /** * 进制转换

2020-12-10 11:15:17 970 1

原创 面试必考真题-算法篇:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。

面试必考真题-算法篇 牛客网堆 分治题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。题目分析利用快速排序,将数组按照标兵即数组的第一个元素,对数组分成两部分,左侧都小于标兵,右侧都大于标兵。如果右侧的不足K个数,则继续从数组左半部分中进行寻找,如果右侧的元素数量大于K个数,则继续从右侧进行寻找。这样可以避免对数组进行全部排序,提高效率。下面是Java代码import ja

2020-12-09 15:36:54 1578

原创 面试必考真题-算法篇:实现函数 int sqrt(int x)。计算并返回x的平方根(向下取整)。

面试必考真题-算法篇 牛客网二分 数学题目描述实现函数 int sqrt(int x)。计算并返回x的平方根(向下取整)。题目分析利用平方数的性质。连续n个奇数相加的结果一定是平方数。例如:9 = 1+3+5 , 一共3个奇数相加,所以32= 916 = 1+3+5+7,一共4个奇数相加,所以42=16下面是Java代码import java.util.*;public class Solution { /** * * @param x int整型

2020-12-08 15:45:42 1663

原创 面试必考真题-算法篇:给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。

面试必考真题-算法篇 牛客网双指针题目描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。具体请参考样例解释输入返回值[3,1,2,5,2,4]5示例示意图如下下面是Java代码import java.util.*;public class Solution { /** * max water * @param arr int整型一维数组 the array * @ret

2020-12-07 21:15:32 1527

原创 面试必考真题-算法篇:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

面试必考真题-算法篇 牛客网字符串 模拟题目描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)题目分析算法1.保证s是较长的字符串,t是较短的字符串;如果不是,交换之。2.用StrngBuilder保存计算结果,remainder保留进位;逐位计算和,计算到t字符串结束,每次计算和记得加上进位。3.计算s比t多出的字符,同样记得加上进位。4.最后如果进位不为0,结果还要加上进位。5.

2020-12-04 18:06:03 3909

原创 面试必考真题-算法篇:写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。

面试必考真题-算法篇 牛客网双指针,字符串题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)题目分析:方法一双指针,将字符串进行翻转。下面是Java代码import java.util.*;public class Solution { /** * 反转字符串 * @param str string字符串 * @return string字符串 */ public String sol

2020-12-04 16:28:42 3155

原创 面试必考真题-算法篇:给定一个数组arr,返回子数组的最大累加和。

面试必考真题-算法篇 牛客网分治 动态规划题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.[要求]时间复杂度为O(n),空间复杂度为O(1)题目分析:定义一个cur记录当前累加结果,如果当前和为负数的话,再往下累加,则不可能是最大值,因此将它变为0,重新开始。下面是Java代码import java.util.*;public class

2020-12-03 13:27:01 1247

原创 面试必考真题-算法篇:给出一个整数数组,请在数组中找出两个加起来等于目标值的数。

面试必考真题-算法篇 牛客网数组 哈希题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2题目分析利用HashMap进行存储,每次存储利用target-当前数字的值作为key,将当前数字的坐

2020-12-02 19:31:20 2489

原创 面试必考真题-算法篇:给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组。

面试必考真题-算法篇 牛客网数组 双指针题目描述给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组。注意:可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n。题目分析:最优解:从后往前处理,不需要开辟额外空间。从后往前,这样不需要进行冗余处理。下面是Java代码public class Solution { public void merge(int A[], int m, int B[], int n) { in

2020-12-01 19:56:00 4628

原创 面试必考真题-算法篇:将给出的链表中的节点每k个一组翻转,返回翻转后的链表。 如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样。

面试必考真题-算法篇 牛客网链表题目描述将给出的链表中的节点每k个一组翻转,返回翻转后的链表。如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样。你不能更改节点中的值,只能更改节点本身。要求空间复杂度 O(1)例如:给定的链表是1→2→3→4→5对于 k=2, 你应该返回 2→1→4→3→5对于 k=3, 你应该返回 3→2→1→4→5题目分析下面是Java代码import java.util.*;/* * public class ListNode { * in

2020-11-26 15:16:56 934

原创 面试必考真题-算法篇:给出一个仅包含字符‘(‘,‘)‘,‘{‘,‘}‘,‘[‘和‘]‘,的字符串,判断给出的字符串是否是合法的括号序列。

面试必考真题-算法篇 牛客网栈 字符串题目描述给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列。括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。示例1输入 "["返回值 false示例2输入 "[]"返回值 true示例3输入 "[()]"返回值 true题目分析利用栈来进行判断,当遇到左括号

2020-11-25 12:01:05 2748

原创 面试必考真题-算法篇:对于一个给定的链表,返回环的入口节点,如果没有环,返回null。

面试必考真题-算法篇 牛客网链表 双指针题目描述对于一个给定的链表,返回环的入口节点,如果没有环,返回null拓展:你能给出不利用额外空间的解法么?题目分析1)首先判断是否有环,有环时,返回相遇的节点,无环,返回null2)有环的情况下,求链表的入环节点fast再次从头出发,每次走一步,slow从相遇点出发,每次走一步,再次相遇即为环入口点。下面是Java代码/** * Definition for singly-linked list. * class ListNode {

2020-11-24 13:09:42 647

原创 面试必考真题-算法篇:设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能。

面试必考真题-算法篇 牛客网模拟 LRU缓存结构题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构。get(key):返回key对应的value值。[要求] set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。 若opt=1,接下来两个整数x, y,表示s

2020-11-23 19:46:57 673

原创 面试必考真题-算法篇:给定一个链表,删除链表的倒数第n个节点并返回链表的头指针。

面试必考真题-算法篇 牛客网链表 双指针题目描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针例如,给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1->2->3->5.备注:题目保证n一定是有效的请给出请给出时间复杂度为\ O(n) O(n)的算法。题目分析按照之前寻找倒数第n个节点的思路进行查找。找的同时注意记录倒数第n个节点的前一个节点,找到后将其前一个节点指向其下一个节点即可。

2020-11-20 12:11:30 487

原创 面试必考真题-算法篇:给定一个二叉树,返回该二叉树层序遍历的结果。

面试必考真题-算法篇 牛客网树 DFS题目描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)题目分析层次遍历完事。注意每层遍历完之后不要清空ArrayList,而是要重新new 一个 ArrayList,如果清空了,返回值的结果也会清空。下面是Java代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNo

2020-11-19 10:55:45 732

原创 面试必考真题-算法篇:分别按照二叉树先序,中序和后序打印所有的节点。

面试必考真题-算法篇 牛客网栈 树 哈希题目描述分别按照二叉树先序,中序和后序打印所有的节点。题目分析:方法一直接按照前中后序遍历方法进行递归遍历,结果添加至二维数组即可。下面是Java代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution

2020-11-18 11:46:49 878

原创 面试必考真题-算法篇:请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。

面试必考真题-算法篇 牛客网二分查找题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。题目分析:方法一下面是Java代码import java.util.*;public class Solution { /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param a int整型一维数组 有序数组

2020-11-17 11:58:22 2376

原创 面试必考真题-算法篇:判断给定的链表中是否有环。

剑指offer算法题链表 双指针题目描述判断给定的链表中是否有环扩展:你能给出空间复杂度O(1)的解法么?方法一 双指针利用快慢指针,快指针走两步,慢指针走一步,如果两个指针相遇,则证明有环。下面是Java代码/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val =

2020-11-16 15:39:43 129

原创 剑指offer:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。

剑指offer算法题数组题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007题目分析下面是Java代码public class Solution { //统计逆序对的个数 int cnt = 0 ; public int InversePairs(int [] array) { if(array.lengt

2020-11-13 16:01:28 718 1

原创 剑指offer:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。

剑指offer算法题数组 回溯题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?题目分析1.从(0,0)开始走,每成功走一步标记当前位置为true,然后从当前位置往四个方向探索,返回值为1 + 4 个

2020-11-12 14:01:25 464

原创 剑指offer:请实现一个函数用来匹配包括‘.’和‘\*’的正则表达式。模式中的字符‘\.‘表示任意一个字符,而‘\*’表示它前面的字符可以出现任意次(包含0次)。

剑指offer算法题字符串 正则表达式题目描述请实现一个函数用来匹配包括‘.’和‘*’的正则表达式。模式中的字符’.'表示任意一个字符,而‘*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。题目分析:此为剑指offer的思路讨论2种:先看 * 再看 匹配前提:当pattern遍历完,return取决于str是否遍历完,str恰好遍历完才返回t

2020-11-12 13:38:48 1087

原创 剑指offer:给定一棵二叉搜索树,请找出其中的第k小的结点。

剑指offer算法题树题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。题目分析由于给定的是一颗二叉搜索树,而对于二叉搜索树来说,其中序遍历的结果就是该树升序排序后的结果。所以我们可以对该树进行中序遍历,然后找到第k个即可。方法一 递归下面是Java代码/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(i

2020-11-10 13:29:05 536 2

原创 剑指offer:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。

剑指offer算法题DFS 回溯题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[abcesfcsadee] \left[ \begin{matrix} a & b & c &e \\ s & f & c & s\\ a & d

2020-11-05 15:16:12 616

原创 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

剑指offer算法题数学 二分题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题目分析首先,丑数是只包含质因子2,3,5的数,所以,丑数一定也是由丑数得到的。(比如6是丑数,那么12 = 2*6 也一定是丑数。)由于1是最小的丑数,那么从1开始,把2*1,3*1,5*1,进行比较,得出最小的就是1的下一个丑数,也就是2*1,这个时候,多了一个丑数‘2’,

2020-11-04 15:16:09 1349

原创 剑指offer:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。

剑指offer算法题链表题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。题目分析解题思路:1、遍历链表,复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;2、重新遍历链表,复制老结点的随机指针给新结点,如A1.random = A.random.next;3、拆分链表,将链表拆分为原

2020-11-03 11:20:25 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除