
日常练习题
文章平均质量分 70
练习
Dark And Grey
Java领域高质量创作者
展开
-
LeetCode - 747 -至少是其他数字两倍的最大数 - Java - 细喔
文章目录题目题目解析解题思维代码如下题目这题很简单,只要认真审题就没有多大问题。像我就是马虎的那个,提交两三次,才发现自己看错题干了 题目解析 给我一个整形数组,里面存在,且唯一的最大值。让我们去判断 最大值 是不是 大于或等于 每个元素的两倍。就是说 最大值 比 每个元素的两倍 还要大,最小也是等于 第二大元素的两倍。 解题思维 既然题目要求:那么,我们可不可以这么去想: 找这个数组的最大值 好 第二大的值。如果最大值 是 第二大的值 的两倍,甚至比这更大,我原创 2022-01-13 16:26:57 · 270 阅读 · 10 评论 -
LeetCode - 334 - 递增的三元子序列 - Java - 细喔
文章目录题目题目解析解题思维一: 双向遍历代码如下:代码细节解题思维二: 贪心代码如下题目 题目解析 题目大意: 给我们一个数,让我们去判断 这个 数组中 从左往右 是否有 有三个元素 num[ i ]、num[ j ]、num[ k ]满足 num[ i ] < num[ j ] < num[ k ] ------递增关系。有,返回true。无,则返回false、 解题思维一: 双向遍历 直白来说 :就是一个循环 正序(从左往右)遍历数组,另一个 逆序(从右往左原创 2022-01-12 19:26:51 · 1926 阅读 · 17 评论 -
LeetCode - 1629 -按键持续时间最长的键 - Java - 细喔
文章目录题目题目解析解题思维 - 一次遍历代码如下题目 题目解析题目大意:给我们一个字符串 keysPressed 里面包括此次测试的键位字符。 还有一个记录 每次按键持续的时间 releaseTimes。要求我们去求 那一次按键持续的时间最长。返回其 测试按键字符值。示例1暗示条件:如果 存在 按键持续最长时间 相同的 两个键位,返回其键位字符最大的一个(根据ASCII码的大小,返回 ASCII码值大的那一个键位字符)。 解题思维 - 一次遍历 既然要求返回 按键持续时间最长原创 2022-01-09 17:21:41 · 765 阅读 · 8 评论 -
LeetCode - 89 - 格雷编码 - Java - 细喔
文章目录前言 - 格雷码的初步认知 与 转换格雷码 - 来自百度百科格雷码初步认知 - 来自百度百科格雷码 与 二进制 间的 转换方法 - 是本题的关键题目题目解析解题思维一:二进制转换格雷码最后附上代码解题方法二:对称生成前言 - 格雷码的初步认知 与 转换格雷码 - 来自百度百科 格雷码: 典型的二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communica原创 2022-01-09 00:06:13 · 496 阅读 · 8 评论 -
LeetCode - 1614 - 括号的最大嵌套深度 - Java
文章目录题目题目解析解题思维代码如下题目 题目解析 首先,朋友们不要被题目吓到了。简单来说:这题就是让你去求 那个字符 - 它身边的括号最多。计算 有几个括号 包裹它。比如:“( a )”: a 字符,只有一个括号包裹它,所以该字符 的 括号最大嵌套深度为 1“( ( b ) )” b 字符,有两个括号包裹它,所以该字符 的 括号最大嵌套深度为 2“( ( ( c ) ) )”c 字符,有三个括号包裹它,所以该字符 的 括号最大嵌套深度为 3 多注意:题目题干 和 示例,你原创 2022-01-07 17:30:04 · 1422 阅读 · 4 评论 -
LeetCode - 71 - 简化路径 - java - 细喔
文章目录题目题目解析解题思维 与 实现细节 - 利用 栈 和 deque双端队列来完成这题。首先,我们先将题目所给出 字符串,以字符串"/" 进行分割,分割成一个字符串数组。另外先创建好 双端队列的类。然后我们就去遍历 字符串数组 str,将符合条件的数据放入栈中。该部分代码实现代码细节接下来,就是取出创建一个 StringBuilder ,来将讲栈内的信息存储。代码细节最后附上代码题目 题目解析题目大意:给我们一个文件目录路径。就像上图上所示,给我们一个这样的文件路径,当然题目给的,还原创 2022-01-06 19:43:38 · 679 阅读 · 7 评论 -
LeetCode - 1576 - 替换所有的问号 - Java - 细喔
文章目录题目题目解析解题思维代码如下题目 题目解析 这题没有 那个题空格换 %20的难,那个还有判断数组容量,是否放得下,放不下就需要扩容。或者暴力解法,直接new一个数组,且容量足够放下 转换后 的 数据。直接copy,遇到空格直接就%20一放完美!但是今天这题就很简单了,遇到问号字符将其它置换为一个小写字母字符,且附近两个字符不能与其相同。 解题思维 直接将字符串s 转换字节数组,然后去遍历数组,遇到 问号字符时,将它置换为 ‘a’ 、‘b’、‘c’ ,其中一个。优先置为原创 2022-01-05 19:27:31 · 728 阅读 · 4 评论 -
LeetCode - 1290 -二进制链表转参数 - java - 两种思维 - 两种解法 - 细喔
文章目录题目题目解析解题思维1代码如下:代码细节解题思维二代码如下题目 题目解析 链表头节点的val值是二进制的最高位,依次递减。根据链表所有节点val值,所构成的二进制数,转换成 十进制数。 解题思维1一般人可能首先就是将链表逆序。然后,创建一个整形变量 result 来记录 转换成十进制数的结果,再去遍历链表,每拿到一个节点的val值,就拿着val去乘以对应的 2^n 的阶乘(n 从 0 开始,刚好就对应着 最低位 n 次幂的值) 。将每个节点的转化成十进制数的结果,累原创 2022-01-04 00:14:46 · 732 阅读 · 15 评论 -
LeetCode - 1185 - 一周中的第几天 - java - 细喔
文章目录题目题目大意解题思路代码如下代码细节细节一细节二代码二(这个就不讲了,跟上一个代码差不多):题目 题目大意 题目表达出的意思很明显:就是给你日期,让我们计算出这个日期对应的是星期几。 解题思路 首先要知道1971年第一天是星期几,通过查询日历得知 1971年第一天(1月1日)是星期五。【1970.12.31 为 星期四】有人可能会有疑问:求这个第一天星期几,有什么意义?你这么想 题目会给我们一个日期,其目的:是想让我们算出 所给 日期 是星期几。日期范围:1971原创 2022-01-03 20:13:22 · 1261 阅读 · 10 评论 -
LeetCode - 390 -消除游戏 - Java - 细喔
文章目录题目题目解析解题思维代码实现过程(因为细节需要)最后附上代码代码细节题目 题目解析 n 表示当前有n个数字(1 ~ n),然后就是开始删除数字。先 正向删除:删除一个数据,下一个不删,以此规律,来对这组数据进行删除。然后 反向删除 :也是一样,删除一个数据,下一个不删。只不过是反着来的。正反向删除,交替删除。直到 这组数据,剩余 1 个数据。将其返回。( 如果 n 一开始 就是 1,就直接返回 1) 解题思维 代码实现过程(因为细节需要) 最后附上代码原创 2022-01-02 20:32:43 · 4307 阅读 · 16 评论 -
LeetCode - 2022 - 将一维数组变成二维数组 - Java
题目 题目解析 使用 original 数组中的所有元素,去组成一个 m * n 的二维数组。如果组成不了【 m * n != original】,则返回一个 空的二维数组。难点: 如果将一维数组 original 中的元素,每次复制 n 个元素,到 二维的数组一行里。(m 行 == 复制 m 次) 这里就需要借助数组的拷贝方式。一共有4 种方式,可参考数组的定义与使用文章,你们可以在目标中找: 数组拷贝【位置偏下】 下面我们就是用数组四种拷贝方式 中 System.array原创 2022-01-01 17:20:57 · 800 阅读 · 12 评论 -
LeetCode - 507 -完美数 - Java - 两种解法
文章目录题目解题思维一:代码如下:代码细节第二种解法 - (数学)题目 解题思维一: 这题的关键就在于:如何获取一个正整数的所有正因数。我的想法是这样的: 代码如下:class Solution { public boolean checkPerfectNumber(int num) { if(num == 1){// 1 肯定不是完美数,除去本身,什么也没有 return false; } int原创 2021-12-31 18:50:26 · 464 阅读 · 6 评论 -
LeetCode - 846 - 一手顺子 - Java - 双指针嵌套遍历 - 细喔
文章目录题目题目解析解题思维1.既然每组牌都是顺子,那么我们就像牌进行排序(升序)。2. 排好了序,就是遍历数组hand,去判断手牌是否groupSize组,每组groupSize 张,且是一个顺子(从左往右,点数依次加一)。当整个循环结束时,也就是说 满足题目要求(我有一手顺子牌),返回true。最后附上程序代码细节题目 题目解析 简单来说 我手上 有一组牌。有 groupSize 张,且又可以分成 groupSize 组,每组都是一个顺子(牌的大小,从左往右,依次加1)。 解题思原创 2021-12-30 18:54:55 · 1381 阅读 · 11 评论 -
LeetCode - 445 - 两数相加|| - java - 细喔
文章目录前身题目题目解析解题过程首先我们为 题目的两个链表,各自创建一个栈。然后便是将 ListNode l1 和 ListNode l2 两个节点的val值,分别存入两个“栈”。接下来,就是出栈,将两个链表对应val值相加,加上 上一个节点的 进位数 carry(逢十进一),得到sum和,再来求 sum 的个位数(sum%10),因为每个节点只能存储一位数。再根据这个值(sum%10),去new一个节点。顺便在讲carry值,更新(sum/10)。代码如下代码细节(不多,只有一个)前身 LeetCo原创 2021-12-29 20:15:23 · 875 阅读 · 11 评论 -
LeetCode - 825 - 适龄的朋友 - Java -在作者看来还算细
文章目录题目题目解析解题思维1:代码附图解题思维2:附上方法二的代码题目 题目解析 解题思维1: 将 数组ages 进行排序(升序),其实就是将这批人 按照年龄 从高到低 进行排序。此时再使用 两个 “左右指针” 进行锁定 x 的交友范围。确定好了之后,right - left 就是 符合 x 交友条件的人数,也就是题目中的 x 会向 y 发送请求。 代码class Solution { public int numFriendRequests(int[] ag原创 2021-12-27 22:44:37 · 823 阅读 · 14 评论 -
LeetCode - 1705 - 吃苹果的最大数目 - Java - 细节~
文章目录题目题目解析解题方法 : 贪心思想 + 优先队列来跟着我一步步看,怎么实现这个代码第一步: 创建 三个变量 和 new 一个 PriorityQueue(优先队列),并制定该队列,每次取出 "苹果 / 数据" 时,永远是快要坏掉的 "苹果 / 数据"。第二步开始遍历 apples 和 days 数组,确认每天产出苹果数量 和 该天产出苹果的保质期。如果到了保质日期,就丢掉。如果没过保质期,就代表我们需要记入 今天苹果的个数和保质期(前提今天有苹果产出),而且也意味着我们今天开始可以吃一个苹果,但是原创 2021-12-24 18:34:47 · 870 阅读 · 15 评论 -
LeetCode - 686 -重复叠加字符串匹配 -Java
文章目录题目暴力解法代码附图题目 暴力解法 运用 StringBuilder 和 indexOf 来解决问题StringBuilder 用来 存储存储 字符串 a 的叠加结果。indexOf 用来 检查 字符串 a 重叠后 的 结果里 是否包含 子串 b。 代码class Solution { public int repeatedStringMatch(String a, String b) { StringBuilder sb = new Stri原创 2021-12-22 22:19:02 · 739 阅读 · 8 评论 -
LeetCode -剑指offer II 006 - 排序数组中的两个数字之和 - Java
文章目录题目解题思维一代码解题思维二(在思维一的基础上,加入一个 二分法)代码解析题目我来总结题目的意思; 给我们一个已将排好序的数组(升序:从低到高),再给我们一个整型数据,要我们从 该数组中找到两个元素的和 等于 这个整形数据,而且 这两个元素必须两个不同的元素。 解题思维一首先我们知道了数组是升序(元素从左往右,从小到大),也就意味 如果 数组中的两个元素之和 大于 target,只需要 要 右边大的元素的下标后退一步(左边的元素 肯定比 右边的小),同理,如果 两个元素之和 小于原创 2021-12-21 16:14:53 · 754 阅读 · 6 评论 -
LeetCode - 997 -找到小镇的法官 - Java
文章目录题目及要求题目解析代码实现第一步:创建一个 容量为 n +1 的一维数组(如果没有:这句按照从1到n对n个人进行编号,我就直接new int[n] 了)计票(遍历题目所给的二维数组来统计票数)通过 遍历 我们 的 计票数组 poll ,来看看有没有一个人获取所有的票。最后附上代码题目及要求 题目解析 先来分析 第一句话:“在一个小镇里,按从 1 到 n 为 n 个人进行编号。传言称,这些人中有一个是小镇上的秘密法官。”注意到 我 加粗的字体了嘛?这些就是这句话关键点之一 !在加上这原创 2021-12-19 16:48:03 · 903 阅读 · 4 评论 -
LeetCode - 1518 - 换酒问题 - java - 细节喔~
文章目录前言题目要求由于题目很简单,我们直接上程序,我们主要目的是它的解题思维解法一解法二解法三解法三是运用了递归思想,其实更为严格来说:是运用数学的方面的知识代码前言 虽然这个题很简单,但是有趣它的解题思维的多样性,我觉得还是很必要写一写的。 题目要求 简单来说:就是我们买了 numBottles 瓶 冰阔乐(以前的那种玻璃瓶装的,现在一些小餐馆还有),店家告诉我们店里现在有活动,numExchange 个 空瓶子,可以换一瓶 冰阔乐,那我们肯定狂饮啊,几个人现场直播吹阔乐。 问最后原创 2021-12-17 18:12:11 · 943 阅读 · 13 评论 -
LeetCode - 807. 保持城市天际线 - Java
文章目录题目要求分析解题先获得 这个街区组成的城市 的 行数将这个城市 看成 一个 n*n 正方体,题目的例子的图形也是这么看的。而且还是二维数组。我们要做的是 创建 2个数组,分别是 rowMax 和 colMax, 意思就是 rowMax 记录每一行的最高的那栋楼的层数, colMax记录每一行列的最高的那栋楼的层数。然后开始遍历 这个 二维数组,获原创 2021-12-13 19:25:21 · 1274 阅读 · 30 评论 -
LeetCode - 506 - 相对名次 - java
文章目录题目条件做法先获得运动员人数将金银铜三奖牌,放在一起做一个数组使用二维数组 来 存储运动员得分情况 和 给运动员编号。(重点)对二维数组进行排序(降序:按得分从高到低排序)发奖牌 (重点)代码如下题目条件 做法先获得运动员人数 将金银铜三奖牌,放在一起做一个数组 使用二维数组 来 存储运动员得分情况 和 给运动员编号。(重点) 有的人可能会说 一维数组的元素为每个运动员的得分,下标看作运动员编号,为什么还要创建一个二维数组? 这是我后面需要将按照他们的得分排序,原创 2021-12-12 18:10:26 · 834 阅读 · 13 评论 -
LeetCode - 748. 最短补全词 - java
文章目录题目条件题目大意:先上代码,一上来看图解,怕你们不了解。我的图解,需要你们先看一遍程序有个印象。图解题目条件题目大意: 给你 一个 不规则的字符串(字符串内容是五花八门的数据:ASCII码表知道吗?里面的数据都可能出现)从该字符串里,提取字母(忽略大小写) 出来 / 或者删除非字母字符 再给你一个数组,这里数组有 几个元素 / 字符串 / 单词,如果 提取出来的字母(忽略大小写) 都在出在一个单词 ,甚至几个单词当中。那么返回那 最短的那个单词 。 总的来说就是,输入一个 “不原创 2021-12-10 22:43:44 · 2668 阅读 · 16 评论 -
LeetCode - 794 - 有效的井字游戏 - java
文章目录题目要求 和 大意代码正常代码风格简约风格(就是能省的符号,就省。能成一行的代码就写成一行)正常风格代码的 讲解题目要求 和 大意 代码正常代码风格class Solution { public boolean validTicTacToe(String[] board) { int x = 0,o = 0;// o 和 x 的棋子数 boolean playerx=false,playero=false;// 玩家x 和 玩家o原创 2021-12-10 16:32:07 · 3817 阅读 · 16 评论 -
LeetCode - 118 -杨辉三角 -Java实现
程序class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> listNum = new ArrayList<>(); List<Integer> List1 = new ArrayList(); List1.add(1); listNum.ad原创 2021-12-09 18:27:38 · 765 阅读 · 11 评论