算法
文章平均质量分 73
Omoikaese
这个作者很懒,什么都没留下…
展开
-
JZ41 数据流中的中位数
JZ41 数据流中的中位数描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用 Insert() 方法读取数据流,使用 GetMedian() 方法获取当前读取数据的中位数。数据范围:数据流中数个数满足 1 ≤ n ≤ 1000 ,大小满足 1≤ val ≤1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3原创 2022-05-29 22:43:00 · 188 阅读 · 0 评论 -
JZ40 最小的K个数
JZ40 最小的K个数描述给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0 ≤ k,n ≤ 10000,数组中每个数的大小0 ≤ val ≤10000要求:空间复杂度 O(n),时间复杂度 O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4 返回值:[1,2,3,4]// 说明:返回最小的4个数即可,返回[1,3,2,4]也可原创 2022-05-29 22:42:28 · 234 阅读 · 0 评论 -
JZ38 字符串的排列
JZ38 字符串的排列描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n < 10要求:空间复杂度 O(n!),时间复杂度 O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:"ab"返回值:["ab","ba"]// 说明:返回["ba","ab"]也是正确的原创 2022-05-29 22:41:47 · 640 阅读 · 0 评论 -
JZ13 机器人的运动范围
JZ13 机器人的运动范围描述地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当 threshold 为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到原创 2022-01-31 19:43:54 · 636 阅读 · 0 评论 -
JZ12 矩阵中的路径
JZ12 矩阵中的路径描述请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为 len 的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串 “bcced” 的路径,但是矩阵中不包含 “abcb” 路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。数据范围:0 ≤ n,m ≤ 20原创 2022-01-25 11:54:39 · 282 阅读 · 0 评论 -
JZ76 删除链表中重复的结点
JZ76 删除链表中重复的结点描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}示例2输入:{1,1,1,8}返回值:{8}解析本题的要求很简单,就是要删除链表中出现了两次以上的节点(全部删除,不是删除多余的)。对于这个问题,有两种思路原创 2022-01-15 23:14:54 · 146 阅读 · 0 评论 -
JZ23 链表中环的入口结点
JZ23 链表中环的入口结点描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围:n ≤ 1000;要求:空间复杂度O(1),时间复杂度O(n)。示例1输入:{1,2},{3,4,5}返回值:3**说明:**返回环形链表入口节点,我们后台会打印该环形链表入口节点,即3。示例2输入:{1},{}返回值:"null"**说明:**没有环,返回null,后台打印"null"解析这题初见是真的毫无思路,无从下手,在看了题解后才恍然原创 2022-01-15 23:14:09 · 207 阅读 · 0 评论 -
JZ36 两个链表的第一个公共结点
JZ36 两个链表的第一个公共结点描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。数据范围:n ≤ 1000;要求:空间复杂度O(1),时间复杂度O(n)。示例1输入:{1,2,3},{4,5},{6,7}返回值:{6,7}**说明:**第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分,这3个参数最后在后台会组装成为2个两个无环的单链表,且是有公共节点的。示原创 2022-01-15 23:13:35 · 129 阅读 · 0 评论 -
JZ61 序列化二叉树
JZ61 序列化二叉树描述请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#)。二叉树的反序列化(Deserialize)是指:根据某种原创 2021-10-03 00:04:01 · 180 阅读 · 0 评论 -
JZ58 对称的二叉树
JZ58 对称的二叉树描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。示例1输入:{8,6,6,5,7,7,5}返回值:true示例2输入:{8,6,9,5,7,7,5}返回值:false解析这题看起来简单又有点难度,但思路到位了理解实现都比较容易。首先关注对称的定义:**如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。**即从根节点开始,左孩子对应右孩子,左孩子的左孩子对应右孩子的右孩子,左孩子的原创 2021-09-30 21:03:08 · 83 阅读 · 0 评论 -
JZ57 二叉树的下一个结点
JZ57 二叉树的下一个结点描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。输入描述:输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点。返回值描述:返回传入的子树根节点的下一个节点,后台会打印输出这个节点。示例1输入:{8,6,10,5,7,9,11},8返回值:9原创 2021-09-30 21:02:57 · 84 阅读 · 0 评论 -
JZ24 二叉树中和为某一值的路径
JZ17 二叉树中和为某一值的路径描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。示例1输入:{10,5,12,4,7},22返回值:[[10,5,7],[10,12]]示例2输入:{10,5,12,4,7},15返回值:[]解析首先分析这道题的返回值,它是一个二维数组,其中的每个一维数组对应二叉树中的一条路径;即路径是一维数组,结果集是二维数组(又说了一遍??原创 2021-09-28 22:46:52 · 61 阅读 · 0 评论 -
JZ23 二叉搜索树的后序遍历序列
JZ23 二叉搜索树的后序遍历序列描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)示例输入:[4,8,6,12,16,14,10]返回值:true解析二叉搜索树( Binary Search Tree )的特点为左子树的值均小于根节点的值,右子树的值均大于根节点的值,在后序遍历序列中,数组末尾即是根节点的值,因此可以将遍历序列分为三部分数组最后一原创 2021-09-24 12:45:01 · 64 阅读 · 0 评论 -
JZ19 顺时针打印矩阵
JZ19 顺时针打印矩阵描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]则依次打印出数字[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]示例输入:[[1,2],[3,4]]返回值:[1,2,4,3]解析本来吧,这种题也没什么特色,不想特意记一下。不过想了半天也没想出来,看了一眼题解恍然大悟,这原创 2021-09-16 12:10:04 · 1319 阅读 · 0 评论 -
JZ17 树的子结构
JZ17 树的子结构描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例输入:{8,8,#,9,#,2,#,5},{8,9,#,2}返回值:true解析这题的思路还是比较明确的,树的问题基本都涉及到树的遍历,此处要遍历树 A,寻找与树 B 根节点相同的节点,从这个相同节点开始判断是否为子结构。一开始写的代码为/**public class TreeNode { int val = 0; TreeNode left =原创 2021-09-15 12:42:50 · 63 阅读 · 0 评论