冲刺大厂之 Java 刷题笔记
文章平均质量分 63
将本专栏的题目刷完,仔细整理学习,冲刺大厂不是问题,加油!!!
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
南淮北安
好好学习
展开
-
冲刺大厂之 Java 刷题总结
将该专栏的题目刷完,仔细学习整理,冲刺大厂没问题加油!!!!文章目录一、数组二、链表三、哈希表四、字符串五、双指针法六、栈与队列七、二叉树八、回溯法九、贪心算法十、动态规划十一、单调队列十一、输入输出练习十二、补充目录十三、真题练习十四、扩展目录一、数组序号题目知识点01关于数组你不得不知道的事数组方法总结35搜索插入位置二分法总结27移除元素双指针法209长度最小的子数组 滑动窗口59螺旋矩阵 II 模拟数组,关键确定边界条件二原创 2022-04-18 17:15:33 · 394 阅读 · 0 评论 -
冲刺大厂之 Java 刷题总结
抓紧学习:刷题文章目录一、数组二、链表三、哈希表四、字符串五、双指针法六、栈与队列七、二叉树八、回溯法九、贪心算法十、动态规划十一、扩展目录一、数组二、链表三、哈希表四、字符串五、双指针法六、栈与队列七、二叉树八、回溯法序号题目解析知识点01关于回溯算法,你不得不知道的事情回溯法模板02组合回溯,剪枝优化03组合总和回溯,剪枝优化九、贪心算法序号题目解析知识点01关于贪心算法,你不得不知道的事情贪心算法思路原创 2021-09-24 10:47:03 · 293 阅读 · 0 评论 -
Java 求解根据身高重建队列
文章目录一、题目二、题解三、代码四、总结一、题目假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。二、题解本原创 2021-09-24 10:21:20 · 185 阅读 · 0 评论 -
Java 求解岛屿数量
文章目录一、题目二、题解三、代码四、总结一、题目二、题解题解参考:岛屿问题凡是在二维数组上下左右移动的问题,注意引入方向数组,简化代码//方向数组int[][] direction = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};简化:for (int[] arr : direction) { findLands(grid, i + arr[0], j + arr[1]);}三、代码class Solution { //方向数组 int原创 2022-04-13 22:26:04 · 806 阅读 · 0 评论 -
Java 求解去除重复字母
文章目录一、题目二、题解一、题目给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。二、题解同样考虑单调栈的思路保持栈内元素单调递增,当前元素小于栈顶元素时,需要将栈顶元素弹出,直到栈顶元素大于当前元素弹出时需要保证,每个字母都出现一次...原创 2021-09-24 10:43:53 · 386 阅读 · 0 评论 -
Java 求解移掉K位数字
文章目录一、题目二、题解三、代码四、总结一、题目给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。二、题解利用单调栈思路,需要移除 k 位,所以可以得到最终的长度为 resLen保持栈内元素单调递减,比较当前元素和栈顶元素的值,如果当前元素小,且剩余元素+栈内元素,足够 resLen,则剔除栈顶元素三、代码class Solution { public String removeKdigit原创 2021-09-24 10:43:34 · 264 阅读 · 0 评论 -
比较两字符串的优先级
文章目录一、题目二、题解一、题目定义两个长度相等的字符串比较最优时,字典序大的那个是更优现在给你一个字符串s,字符串的元素全是小写英文字母a-z,你可以在这个字符串按照顺序选择一个长度为k的子序列(可以不连续),现在求最优子序列是什么比较它们第一次出现不相等时,字母大的那个更大比如 abac 大于 aazy输入 4 2;ebfc 输出 fc二、题解该题如果选用回溯法,会超时,但是又需要罗列所有的情况,选择其中字典序最大的子序列可以采用单调栈的思想栈为空时,入栈遍历所有的字符,比较当前原创 2021-09-24 10:43:12 · 193 阅读 · 0 评论 -
Java 求解下一个更大元素 I
文章目录一、题目二、题解三、代码四、总结一、题目给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。二、题解从题目示例中我们可以看出最后是要求nums1的每个元素在nums2中下一个比当前元素大的元素,那么就要定义一个和nums1一样原创 2021-09-24 10:42:51 · 202 阅读 · 0 评论 -
Java 求解打家劫舍
文章目录一、题目二、题解三、代码四、总结一、题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。二、题解(1)确定dp数组及下标的含义:dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。(2)确定递推公式:决定dp[i]的因原创 2021-09-24 10:33:09 · 226 阅读 · 0 评论 -
Java 求解分发糖果
文章目录一、题目二、题解三、代码四、总结一、题目老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?二、题解该题,也可以考虑贪心的策略局部最优,推出全局最优从左到右:只要右边评分比左边大,右边的孩子就多一个糖果,全局最优:相邻的孩子中,评分高的右孩子获得比左边孩子更多的原创 2021-09-24 10:21:00 · 500 阅读 · 0 评论 -
Java 求解用最少数量的箭引爆气球
文章目录一、题目二、题解三、代码四、总结一、题目在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限原创 2021-09-19 22:07:37 · 131 阅读 · 0 评论 -
Java 求解全排列 II
文章目录一、题目二、题解三、代码四、总结一、题目给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。二、题解去重一定要对元素进行排序,这样我们才能方便通过相邻的节点来判断是否重复是用来我以示例中的 [1,1,2]为例 (为了方便举例,已经排序)抽象为一棵树,去重过程如图:图中我们对同一树层,前一位(也就是nums[i-1])如果使用过,那么就进行去重。一般来说:组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果三、代码cla原创 2021-09-24 10:14:35 · 232 阅读 · 0 评论 -
Java 求解 N 皇后
文章目录一、题目二、题解三、代码四、总结一、题目n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。皇后彼此不能攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或者斜线上二、题解首先需要明确,题目的约束条件:不能同行不能同列不能同斜线确定完约束条件,来看看究原创 2021-09-24 10:14:58 · 227 阅读 · 0 评论 -
Java 求解最长递增子序列
文章目录一、题目二、题解三、代码四、总结一、题目给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。二、题解最长上升子序列是动规的经典题目,这里dp[i]是可以根据dp[j] (j < i)推导出来的,那么依然用动规五部曲来分析详细一波:(1)确定 dp 数组以及下标的含义dp[i]表示i之前包括i的最长上升子序列。原创 2021-12-25 13:28:37 · 1277 阅读 · 12 评论 -
Java 求解买卖股票时机含冷冻期
文章目录一、题目二、题解三、代码一、题目给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。二、题解该题,具体可以分为四个状态:状态1:买入股票的状态状态2:卖出股票,同时度过了冷冻期,也就是保持卖出的状态状态3:今天卖出了股票状态4:冷冻期,原创 2021-12-23 22:36:36 · 250 阅读 · 1 评论 -
Java 求解打家劫舍II
文章目录一、题目二、题解三、代码四、总结一、题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。二、题解对于一个数组,成环的话主要有如下三种情况:(1)情况一:考虑不包含首尾元素(2)情况二:考原创 2021-12-21 22:12:33 · 395 阅读 · 0 评论 -
Java 求解零钱兑换
文章目录一、题目二、完全背包解析三、代码四、总结一、题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。二、完全背包解析题目要求使用硬币凑总金额,每枚硬币可以使用多次,要求硬币个数最少,所以是完全背包问题,硬币个数最少是组合问题(1)确定dp数组及下标含义dp[j] 表示:总金额为 j 时,硬币最少是多少枚(2)确定递推表达式对于硬币原创 2021-12-20 21:44:22 · 706 阅读 · 0 评论 -
Java 求解一和零
文章目录一、题目二、背包解析三、代码四、总结一、题目给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。二、背包解析该题仍然可以按照背包问题去解析字符串数组里的元素,可以看作物品m和n相当于背包,两个维度的背包(1)确定 dp 数组dp[i][j] 表示 i 个零和 j 个一时最大子集数目(2)确定递推表达原创 2021-12-15 22:48:15 · 748 阅读 · 0 评论 -
Java 求解柱状图中最大的矩形
文章目录一、题目二、题解三、代码四、总结一、题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。二、题解题目让找出最大的矩形,可以考虑枚举矩形的宽和高,逐个比较以当前柱形高构成的矩形,得到最大的面积也就是对于每一个柱形,需要往其左边找出第一个比他小的柱形高度,比如5左边第一个比他小的是高度1的柱形,右边第一个比它小的柱形高度是2所以以该柱形5对应的面积为 5*2=10对于每一个柱形都需要找到其左边第一个比原创 2021-12-14 14:11:15 · 531 阅读 · 0 评论 -
Java 求解不同的二叉搜索树
文章目录一、题目二、动态规划分析三、代码四、总结一、题目给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:二、动态规划分析假设 n 个节点存在二叉排序树的个数是 G (n),令 f(i) 为以 i 为根的二叉搜索树的个数,则G(n)=f(1)+f(2)+f(3)+f(4)+...+f(n)当 i 为根节点时,其左子树节点个数为 i-1 个,右子树节点为 n-i,则:f(i)=G(i−1)∗G(n−i)所以 n 个节点存在的二叉排序树的个数可以拆分成每个节点作为原创 2021-12-08 13:42:55 · 408 阅读 · 0 评论 -
Java 求解单词搜索
文章目录一、题目二、代码一、题目给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。二、代码采用回溯的思想,当第一个字符匹配时,开始对其进行递归判断同时需要一个标志 数组记录当前字符是否被访问过,防止重复访问每个字符都可以对其上下左右进行操作,为了操作方便原创 2021-12-07 22:17:16 · 320 阅读 · 0 评论 -
Java 求解不同的路径
文章目录一、题目二、动态规划题目分析三、代码四、代码优化五、总结一、题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?二、动态规划题目分析题目说明每次只能向下走,或者向右走,所以当前路径其实依赖于上一步路径的走法所以可以进行动态规划分析(1)确定 dp 数组及数组下标含义dp[i][j]:表示从 (0,0) 出发到原创 2021-12-07 20:05:49 · 560 阅读 · 0 评论 -
Java 求解最小覆盖子串
文章目录一、题目二、题解三、代码四、总结一、题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。二、题解采用滑动窗口的思想用i,j表示滑动窗口的左边界和右边界,通过改变i,j来扩展和收缩滑动窗口,可以想象成一个窗口在字符串上游走,当这个窗口包含的元原创 2021-12-07 10:42:14 · 648 阅读 · 0 评论 -
Java 求解有效的括号字符串
文章目录一、题目二、题解三、代码四、总结一、题目给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。左括号 ( 必须在对应的右括号之前 )。* 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。一个空字符串也被视为有效字符串。二、题解该题目,是括号匹配问题,以为和以前的括号匹配一样,需要借助栈实现,发现多了个万能 * 号该原创 2021-12-06 21:17:41 · 510 阅读 · 0 评论 -
Java 求解加油站
文章目录一、题目二、题解三、代码四、总结一、题目在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。二、题解暴力解法: 遍历每一个加油站,模拟一原创 2021-12-04 14:47:10 · 328 阅读 · 0 评论 -
Java求解K次取反后最大化的数组和
文章目录一、题目二、题解三、代码四、总结一、题目给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。二、题解如何让数组和最大 ?贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。局部最优可以推出全局最优。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,原创 2021-12-03 20:55:38 · 821 阅读 · 0 评论 -
Java 求解买卖股票的时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2021-12-02 20:15:57 · 703 阅读 · 0 评论 -
Java 求解全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。原创 2021-11-30 20:31:22 · 340 阅读 · 0 评论 -
Java 求解递增子序列
文章目录一、题目二、题解三、代码四、总结一、题目给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2 。二、题解而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了所以不能使用之前的去重逻辑:加一个标记数组去重(1)递归函数参数本题求子序列,很明显一个元素不能重复使用,所以需要 startIndex,调整下一层递归的起始位置。(2)终止条件本题其实类似求子集问题,也是要遍历树形结构找每一个节点,所以和回溯算法:求子集问题!一样,可以不原创 2021-11-29 17:16:15 · 771 阅读 · 0 评论 -
Java求解子集II
文章目录一、题目二、题解三、代码四、总结一、题目给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。二、题解该题和 求组合总和II 类似,也就是在上一题的基础上增加了去重。去重套路就是加一个标志数组,在树层去重;用示例中的[1, 2, 2] 来举例,如图所示:(注意去重需要先对集合排序)从图中可以看出,同一树层上重复取2 就要过滤掉,同一树枝上就可以重复取2,因为同一树枝上元素的集原创 2021-09-24 10:13:25 · 157 阅读 · 0 评论 -
Java 求解子集
文章目录一、题目二、题解三、代码四、总结一、题目给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。二、题解题目要求解集不能包含重复的子集,所以,取过的元素不能重复选取,所以需要设置 index回溯三部曲(1)递归函数参数:全局变量 lists,存放所有的结果全局变量 list,存放每一次的结果(2)递归终止条件:当记录遍历顺序的 index,大于数组长度时,就是集合为空(3)单层搜原创 2021-09-24 10:13:06 · 330 阅读 · 0 评论 -
Java 求解二叉搜索树的最小绝对差
文章目录一、题目二、题解三、递归法四、迭代法五、总结一、题目给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。二、题解该题类似:验证二叉搜索树已知是一颗二叉搜索树,所以最小值一定出现在相邻的节点即对这棵树中序遍历即可,遍历过程中找出相邻结点的最小差值三、递归法中序遍历,求相邻结点的最小差值,所以需要记录前驱节点class Solution { //记录遍历过程中的最小差值 int min = Integer.MAX_VALUE; /原创 2021-09-19 10:21:03 · 157 阅读 · 0 评论 -
Java 构造二叉树如此简单
文章目录一、由中序和后序遍历构造二叉树1. 题目2. 题目分析3. 代码二、由前序和中序遍历构造二叉树三、总结一、由中序和后序遍历构造二叉树1. 题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]2. 题目分析可以借助二叉树后序遍历最后一个值为根节点的值,以此为分界线可以将中序遍历数组分为两部分以此为基础,层层切割切割过程原创 2021-11-23 22:37:13 · 946 阅读 · 0 评论 -
终于搞明白了二叉树的递归函数是否需要返回值
如果需要遍历搜索整棵树,那么递归函数就不需要返回值如果需要搜索其中一条符合条件的路径,递归函数就需要返回值,因为遇到符合条件的路径就要及时返回文章目录一、Java 求解路径总和1. 题目2. 题目分析3. 递归法二、Java 求解路径总和 II1. 题目2. 递归法三、总结一、Java 求解路径总和1. 题目给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点是原创 2021-11-23 21:05:37 · 1034 阅读 · 0 评论 -
Java 求解平衡二叉树
文章目录一、题目二、题目分析三、迭代法四、总结一、题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。二、题目分析该题和求解二叉树的最大深度有很大区别:二叉树节点的深度:指从根节点到该节点的最长的简单路径边的条数二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数高度和深度的计算方法以 LeetCode 为准,即以节点为一度深度可以从上到下去查,所以需要前序遍历(中左右原创 2021-11-22 15:46:00 · 268 阅读 · 0 评论 -
Java 求解完全二叉树的节点个数
文章目录一、题目二、递归法三、迭代法四、总结一、题目给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^h 个节点。二、递归法该题求解二叉树的节点数目,和完全二叉树关系不大,可以看作求解二叉树的节点数,递归法和求解二叉树的最大深度类似采用后序遍历,遍历左子树,遍历右子树(1)确定递归参数及原创 2021-11-21 22:11:22 · 1016 阅读 · 0 评论 -
Java 求解翻转二叉树
文章目录一、题目二、题目分析三、递归法四、非递归法五、层序遍历六、总结一、题目翻转一棵二叉树。二、题目分析题目要求翻转二叉树,其实只需要把每一个节点左右孩子交换(孩子下面的节点是一起交换的)即可题目使用前序遍历和后序遍历都可,但是中序遍历不可以,因为中序遍历会把某些节点的左右孩子翻转两次当然选择层序遍历也是可以的三、递归法(1)确定递归参数和返回值参数就是需要传入节点,返回的也是节点(2)确定递归终止条件当前节点为空时,返回(3)确定单层递归的逻辑选用前序遍历方式,所原创 2021-11-21 11:28:16 · 1301 阅读 · 0 评论 -
Java 求解前 K 个高频元素
文章目录一、题目二、优先级队列题解三、代码四、总结一、题目给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。二、优先级队列题解题目要求得出现频率前 k 高的元素,所以需要求得:(1)统计元素出现的频率(2)对频率排序(3)找出前 K 个高频元素(1)统计元素的频率,可以采用map记录(2)对频率排序,可以利用优先级队列对其频率进行排序优先级队列:就是堆求前K高频元素:可以对队列从大到小排序(3)遍历找出前K高频原创 2021-11-18 20:22:00 · 987 阅读 · 0 评论 -
Java 求解删除字符串中的所有相邻重复项
文章目录一、题目二、题解一、题目给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。二、题解该题同样借助栈实现,栈为空或者要入栈的元素和栈顶元素不等时,就入栈class Solution { public String removeDuplicates(String S) { Deque<Character> de原创 2021-11-18 13:10:32 · 635 阅读 · 0 评论 -
Java 求解有效的括号
文章目录一、题目二、题目分析三、总结一、题目给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合二、题目分析括号匹配是使用栈解决的经典问题class Solution { public boolean isValid(String s) { Deque<Character> deque = new LinkedList<原创 2021-11-17 22:36:41 · 411 阅读 · 0 评论