02 2022 档案

摘要:二叉树的最小深度(递归) 问题重述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 **说明:**叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [ 阅读全文
posted @ 2022-02-27 13:18 foldn 阅读(262) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历 问题重述: 二叉树的遍历 问题分析: 解法: 递归、迭代 解题: 代码: 递归写法 //前序遍历 public List<Integer> preorder(TreeNode root,List<Integer> list){ if(root == null){ return list 阅读全文
posted @ 2022-02-26 14:36 foldn 阅读(39) 评论(0) 推荐(0) 编辑
摘要:将链表按照左右分区重新排列 问题重述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要 阅读全文
posted @ 2022-02-23 19:00 foldn 阅读(65) 评论(0) 推荐(0) 编辑
摘要:合并两个有序列表 问题重述: 问题分析: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输 阅读全文
posted @ 2022-02-21 21:06 foldn 阅读(187) 评论(0) 推荐(0) 编辑
摘要:向有序环形单链表中插入新节点 问题重述: 一个有序的环形单链表,从头节点开始升序,同时由最后一个结点指回头节点,给定一个环形链表的头节点和一个数值num,创建一个数值为num的新节点,将该节点插入到环形单链表中,要求链表始终有序 问题分析: 这道题就是简单的遍历环形单链表,然后插入新节点,只需要考虑 阅读全文
posted @ 2022-02-21 18:18 foldn 阅读(208) 评论(0) 推荐(0) 编辑
摘要:链表的选择排序 问题重述: 给定一个无序单链表的头节点head,实现单链表的选择排序 要求:额外空间复杂度为O(1) 问题分析: 解法: 选择排序 解题: 代码: // 如果没有限定空间复杂度的话,可以直接将结点放进数组中,然后在数组中进行选择排序,排序完成后在将结点联结起来 /** * 实现链表的 阅读全文
posted @ 2022-02-21 16:31 foldn 阅读(359) 评论(0) 推荐(0) 编辑
摘要:删除重复值的结点 问题重述: 给定一个无序单链表的头节点head,删除其中值重复出现的结点 问题分析: 这道题要删除重复值的结点,我们可以想到哈希表,因为哈希表是无序不重复的,我们使用哈希表对值进行保存,后续加入的值如果已经在哈希表中存在了,就删除,否则就加入哈希表 解法: 哈希表,或者多次遍历 解 阅读全文
posted @ 2022-02-21 14:26 foldn 阅读(43) 评论(0) 推荐(0) 编辑
摘要:判断一个链表是否为回文序列 问题重述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: 链 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(165) 评论(0) 推荐(0) 编辑
摘要:删除链表的中间节点 问题重述: 给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n = 1、2、3、4 和 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(315) 评论(0) 推荐(0) 编辑
摘要:删除链表的a/b处结点 问题重述: 给定链表的头节点head,整数a和b,实现删除位于a/b处节点的函数 例如: 链表:1-2-3-4-5,假设a/b的值为r 如果r等于0,不删除任何结点 如果r位于(0~1/5),删除结点1 如果r位于(1/5~2/5),删除结点2 如果r位于(2/5~3/5), 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(37) 评论(0) 推荐(0) 编辑
摘要:删除链表的倒数第k个结点 问题重述: 给你一个链表,删除链表的倒数第 k 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], k = 1 输出:[] 示例 3: 输入:head = 阅读全文
posted @ 2022-02-21 14:23 foldn 阅读(268) 评论(0) 推荐(0) 编辑
摘要:两个单链表相交的一系列问题 问题重述: 给定两个单链表,单链表可能有环,也可能没有环,给定两个链表的头节点,判断是否相交,如果相交就返回相交的第一个结点,如果不相交就返回null 问题分析: 这道问题要求判断两个单链表是否相交,首先,环状链表和非环状链表不可能相交(因为相交之后,两个链表的后续结点应 阅读全文
posted @ 2022-02-21 14:23 foldn 阅读(109) 评论(0) 推荐(0) 编辑
摘要:将搜索二叉树转换成双向链表 问题重述: 给与一颗搜索二叉树,将其转换为一个有序的双向链表,并将链表的头返回 例如: 这棵搜索二叉树转换后的双向链表从头到尾依次是1~9。对每一个节点来说,原来的right指针等价于转换后的next 指针,原来的left 指针等价于转换后的last 指针,最后返回转换后 阅读全文
posted @ 2022-02-21 14:22 foldn 阅读(94) 评论(0) 推荐(0) 编辑
摘要:将一个单向链表按照某个值划分为左边小、中间相等、右边大的形式 问题重述: 给定一个单向链表的头节点,节点的类型是整形,在给定一个整数pivot,实现一个调整链表的函数,将链表划分成左边都是小于pivot的结点,中间都是等于的结点,右边都是大于的结点(调整后的结点顺序不做要求) 进阶:左中右的结点顺序 阅读全文
posted @ 2022-02-21 14:22 foldn 阅读(184) 评论(0) 推荐(0) 编辑
摘要:复制带有随机指针节点的链表 问题重述: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 阅读全文
posted @ 2022-02-21 14:21 foldn 阅读(47) 评论(0) 推荐(0) 编辑
摘要:将单链表的每K个结点逆序 问题重述:给定一个单链表的头节点,实现一个调整单链表的函数,使得每k个结点之间逆序,如果最后不足k个节点一组则不调整最后几个结点 问题分析: 简单做法,直接使用栈保存那k个结点,然后将这k个结点逆序后连接到链表上去,只需要注意头节点即可。进阶解法直接对链表进行处理,每一次记 阅读全文
posted @ 2022-02-21 14:21 foldn 阅读(93) 评论(0) 推荐(0) 编辑
摘要:部分链表的反转 问题重述: 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, rig 阅读全文
posted @ 2022-02-21 14:20 foldn 阅读(735) 评论(0) 推荐(0) 编辑
摘要:链表的反转 问题重述: 创建两个函数,分别实现反转单向链表和双向链表,给予链表的头节点head,返回反转后的头结点 要求:如果链表的长度为n,时间复杂度要求为o(n),空间复杂度为o(1) 问题分析: 题目要求我们反转,我们可以直接循环链表,然后在循环体中对每一个结点进行反转,需要注意的是,我们不能 阅读全文
posted @ 2022-02-21 14:20 foldn 阅读(109) 评论(0) 推荐(0) 编辑
摘要:生成窗口最大数组(优先队列、单调队列) 问题重述: 给你一个整数数组 arr,有一个大小为 w 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 示例 1: 输入:arr = [1,3,-1,-3,5,3,6,7] 阅读全文
posted @ 2022-02-19 22:16 foldn 阅读(49) 评论(0) 推荐(0) 编辑
摘要:最大值减去最小值小于等于num的子数组数量(单调队列) 问题重述: 给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况: max(arr[i...j]) - min(arr[i...j]) ⇐ num max(arr[i...j])表示子数组arr[i...j]中的最大值,min[a 阅读全文
posted @ 2022-02-19 22:16 foldn 阅读(84) 评论(0) 推荐(0) 编辑
摘要:求元素左右小于本身的值 问题重述: 给你一个整数数组 arr,求得每个元素左右小于其本身且距离它最近的元素,若不存在给定-1,返回所有位置的对应信息 示例 1: 输入:arr = [3, 4, 1, 3, 5, 2, 7] 输出: -1 2 0 2 -1 -1 2 5 3 5 2 -1 5 -1 输 阅读全文
posted @ 2022-02-19 22:15 foldn 阅读(33) 评论(0) 推荐(0) 编辑
摘要:求最大矩形 问题重述: 给定一个整型矩阵map,其中的值只有0和1两种,求其中全是1的所有矩形区域中, 最大的矩形区域为1的数量。 例如: 1 1 1 0 其中,最大的矩形区域有3个1,所以返回3。 再如: 1 0 1 1 1 1 1 1 1 1 1 0 其中,最大的矩形区域有6个1,所以返回6 问 阅读全文
posted @ 2022-02-19 22:15 foldn 阅读(135) 评论(0) 推荐(0) 编辑
摘要:可见的山峰对数量(单调栈) 问题重述: 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2-> 阅读全文
posted @ 2022-02-19 22:14 foldn 阅读(164) 评论(0) 推荐(0) 编辑
摘要:3481. 阶乘的和 问题重述: 给定一个非负整数 n,请你判断是否存在一些整数 xi,能够使得 n=∑1≤i≤txi!,其中 t≥1,xi≥0,xi=xj iff i=j。 iff 表示当且仅当。 输入格式 输入包含多组测试数据。 每组数据占一行,包含一个非负整数 n。 最后一行是一个负数,表示输 阅读全文
posted @ 2022-02-19 22:13 foldn 阅读(201) 评论(0) 推荐(0) 编辑
摘要:3489. 星期几 问题重述: 已知 11 年 11 月 11 日是星期一。 现在给定一个日期,请你判断是星期几。 注意闰年的 22 月有 2929 天。 满足下面条件之一的是闰年: 年份是 44 的整数倍,而且不是 100100 的整数倍; 年份是 400400 的整数倍。 输入格式 输入包含多组 阅读全文
posted @ 2022-02-19 22:12 foldn 阅读(66) 评论(0) 推荐(0) 编辑
摘要:3493. 最大的和 问题重述: 给定一个长度为 n的正整数数列 a1,a2,…,an。 初始时,数列中的每个元素要么处于可选状态,要么处于不可选状态。 你可以选择一个长度恰好为 k 的区间 [i,i+k−1],使得 ai∼ai+k−1 这 k 个元素的状态全部变为可选。 请问,在经过此操作后,所有 阅读全文
posted @ 2022-02-19 22:11 foldn 阅读(76) 评论(0) 推荐(0) 编辑
摘要:3502. 不同路径数 问题重述: 给定一个 n×m的二维矩阵,其中的每个元素都是一个 [1,9][1,9] 之间的正整数。 从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。 走了 k次后,经过的元素会构成一个 (k+1) 位数。 请求出一共可以走出多少个不同的 ( 阅读全文
posted @ 2022-02-19 22:10 foldn 阅读(123) 评论(0) 推荐(0) 编辑
摘要:Java在算法题中的输入问题 在写算法题的时候,经常因为数据的输入问题而导致卡壳,其中最常见的就是数据输入无法结束。 1.给定范围,确定输入几个数据 直接使用普通的Scanner输入数据范围,然后使用for循环输入后续数据。 例如: Scanner scanner = new Scanner(Sys 阅读全文
posted @ 2022-02-19 22:09 foldn 阅读(199) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示