leetcode&牛客
文章平均质量分 54
由易到难,逐步破解 leetcode、牛客算法题
我有明珠一颗
一条通往业界大神的成功之路
展开
-
HJ26 字符串排序
Character.isLetter(char c) 方法可判断字符是否为字母,相当于判断(c>='a'&& c='A'&& c (char)c)可以转化为字符型;filter() 表示过滤,这里将所有大小写字母过滤出来原创 2023-11-10 14:05:34 · 109 阅读 · 0 评论 -
HJ23 删除字符串中出现次数最少的字符
将字符串中的字符通过 Stream 和 lambda表达式 加入到 HashMap 中,记录每个字符的个数;通过 Collections.min() 方法找到 map 中最小值对应的 value值;通过Stream的filter方法过滤掉数量最少的元素,mapToObj将类型转化为char,最后无换行输出。原创 2023-11-10 13:26:02 · 66 阅读 · 0 评论 -
HJ20 密码验证合格程序
str.chars() 获取字符流,通过流的 filter 方法可以简单地过滤出符合要求的字符。".*(.{3,}).*\\1.*" 表示匹配长度 >=3 的重复子字符串。这里的 .* 表示任意长度(>=0)的字符串,中间夹杂了 "(.{3,})" 和 "\\1",(.{3,})表示匹配任意长度>=3的字符串,\\1 表示匹配与前面(.{3,})一样的字符串,所以 ".*(.{3,}).*\\1.*" 表示匹配长度 >=3 的重复子字符串。原创 2023-11-09 19:24:16 · 85 阅读 · 0 评论 -
华为机试练习题:HJ35 蛇形矩阵
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。输入正整数N(N不大于100)输出一个N行的蛇形矩阵。原创 2023-11-09 15:21:39 · 69 阅读 · 0 评论 -
Java8.0 Stream、lambda表达式练习(持续更新中)
Java8.0 Stream、lambda表达式练习。原创 2023-11-09 00:37:05 · 283 阅读 · 0 评论 -
华为机试练习题:HJ51 输出单向链表中倒数第k个结点
Java实现:输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。原创 2023-11-08 13:23:41 · 69 阅读 · 0 评论 -
华为机试练习题:HJ9 提取不重复的整数
String类型的contains()方法,可以判断字符串中是否有子字符串。String类型的substring(int beginIndex, int endIndex) 根据指定的起始位置和终止位置,截取字符串。原创 2023-11-08 12:40:28 · 76 阅读 · 0 评论 -
华为机试练习题:HJ8 合并表记录
TreeMap 可以自动升序排序,输出符合测试用例如果结果不讲究排序,则可以用 HashMap使用Lambda表达式可简化集合的输出代码,不必再写for循环原创 2023-11-08 12:17:52 · 72 阅读 · 0 评论 -
华为机试练习题:HJ15 求int型正整数在内存中存储时1的个数
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。数据范围:保证在 32 位整型数字范围内。这个数转换成2进制后,输出1的个数。原创 2023-11-07 18:15:46 · 92 阅读 · 0 评论 -
华为机试练习题:HJ14 字符串排序
Arrays.sort() 可以对各种类型的数组进行排序操作。原创 2023-11-07 18:05:39 · 105 阅读 · 0 评论 -
华为机试练习题:HJ13 句子逆序
trim() 方法:去除字符串首尾的空格;split() 方法:按照指定分隔符来把字符串且分为字符串数组,默认分隔符为空格;采用 StringBuilder 类来操作有长度变化需求的字符串,可提升效率。原创 2023-11-07 17:56:31 · 52 阅读 · 0 评论 -
华为机试练习题:HJ11 数字颠倒
String 一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。而 StringBuffer 和 StringBuilder 类使用 append 和 insert 等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。因此:当需要进行频繁修改字符串的操作时先建立 StringBuffer 或 StringBuilder 类对象进行操作,将最后结果转化成 String 类对象返回,这样效率会高很多。原创 2023-11-07 17:27:41 · 67 阅读 · 0 评论 -
华为机试练习题:HJ10 字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。数据范围: 1≤n≤500。输入一行没有空格的字符串。原创 2023-11-06 13:27:16 · 80 阅读 · 0 评论 -
算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表
讲一下设置虚拟头节点的那个方法,设置一个新节点指向原来链表的头节点,这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值,来判断是否删除这个后继节点了。如果不设置虚拟头节点,则需要将头节点和后面的节点分开来讨论,代码会复杂一点。原创 2023-11-05 23:33:42 · 188 阅读 · 0 评论 -
算法题:33. 搜索旋转排序数组(二分法)
题目要求必须设计一个时间复杂度为O(log n)的算法解决此问题,所以我们可以采用二分法。Step1. 先把 nums[0] 作为目标值,通过二分法找到旋转点索引;Step2. 如果旋转点索引为0,则数组本身就是升序的,否则思想上可以将数组一分为二,看做两个升序数组。Step3. 判断 target 目标值在一分为二后的数组的哪一个里面,从而确定左右端索引。(特殊情况:如果旋转点索引为0,则左右端索引就是 0 和 nums.length - 1)。Step4. 二分法查找到 target。原创 2023-11-05 11:04:05 · 157 阅读 · 0 评论 -
算法题:53. 最大子数组和(动态规划)Java & Python 实现
算法题:53. 最大子数组和(动态规划)Java & Python 实现原创 2023-11-04 20:09:43 · 159 阅读 · 0 评论 -
算法题:870. 优势洗牌
解题思路:田忌赛马的思想 + 贪心法。Step1. 对两个数组进行排序。Step2. 同时遍历排序后的nums2和nums1,将num1中刚好超过nums2当前值的值放到对应的位置,而不超过nums2当前值的值放到最后面去,因为反正这些值超不过nums2,不如把num1中较小的值用来对应nums2中较大的值。原创 2023-11-04 00:15:27 · 152 阅读 · 0 评论 -
算法题:16. 最接近的三数之和(Python & Java 详解)
Step1:先对数组排序,然后设置3个指针,遍历范围为(0~数组长度减2)。位置确定时,后面的数组元素首位各放置一个指针(Step3:如果三数之和=target,则返回target值;如果三数之和target,则将往前移动。Step4:当和重合时,则将往后移动。Step5:重复 Step2 到 Step4。直到遍历完。原创 2023-11-03 20:54:57 · 148 阅读 · 0 评论 -
算法题:144.二叉树的前序遍历(递归、迭代)Java & Python部分
二叉树的前序遍历(递归、迭代)Java实现原创 2023-11-03 11:27:27 · 65 阅读 · 0 评论 -
算法:Java构建二叉树并迭代实现二叉树的前序、中序、后序遍历
算法:Java构建二叉树并迭代实现二叉树的前序、中序、后序遍历。原创 2023-11-03 11:22:56 · 422 阅读 · 0 评论 -
算法:Java构建二叉树并递归实现二叉树的前序、中序、后序遍历
Java构建二叉树并递归实现二叉树的前序、中序、后序遍历原创 2023-11-03 09:23:27 · 354 阅读 · 0 评论 -
算法题:99.恢复二叉搜索树
由二叉搜索树的定义可推知:二叉搜索树的中序遍历结果一定是严格由小到大排序的。由于“恢复二叉搜索树”的题目中指出“恰好两个节点的值被错误地交换”,那么我们只要找出破坏了这个顺序的两个节点,交换其节点值就可以了。本题最优解法是采用 Morris 中序遍历方法,也就是题目进阶要求里的使用O(1)空间的解决方案。原创 2023-11-02 18:07:06 · 166 阅读 · 0 评论 -
算法题:102.二叉树的层序遍历
层序遍历,看似简单,实则陷阱很多,怪不得该题目被认定为中等难度题。此处运用了迭代求解法。原创 2023-11-01 12:40:52 · 70 阅读 · 0 评论 -
Java 求两个数的最大公约数和最小公倍数(理解原理 > 背诵)
为什么反复执行 a % b ,即可得到最大公约数?(设定前提是a > b)其中的数学原理就是:a 和 b 的最大公约数 完全等同于b 和 a%b 的最大公约数原创 2023-10-17 17:48:35 · 112 阅读 · 0 评论 -
算法题:FZ1.牛牛的三元组问题
解题思路:先排序,然后直接3个for循环,但在具体操作过程中,需要去除重复三元组,所以加了两处判断原创 2023-09-24 23:14:22 · 90 阅读 · 0 评论 -
算法:求第n项的因子数量(某大厂2023笔试题)
解题思路:1、分别算出 a, b, c三个数的质因数;2、通过快速幂矩阵计算出第n项数据中a、b、c的指数(计算过程中要取模);3、结合a、b、c的指数,以及a, b, c三个数的质因数, 来求出第n项数据对应的质因数,以及对应质因数的指数;4、最后将第n项数据的各个质因数的指数分别+1之后相乘,就得到第n项数据的因子个数。原创 2023-09-29 16:11:58 · 171 阅读 · 0 评论 -
算法题:714.买卖股票的最佳时机含手续费(动态规划解法&贪心解法-详解)
贪心解法1)在连续递减的情况下买入价格最低时的股票,在不亏本的情况下如果连续递增则在最高点卖掉股票(因为要多考虑一个fee的费用,所以不亏本的前提要加上)。2)代码有点弯弯绕在里面,就是在还没买入的时候我们把手续费fee加到当前股票价格price上面,遍历prices数组,判断各个相邻price+fee后的大小,在连续递减的情况下选择最低点的买入。3)买入之后就要寻找最高点卖出,我们继续往后遍历,找到卖出能够有利润的第一支股票,设置一个“虚拟卖出”,由于后面的股票价格可能更高,所以这里不一定是当原创 2023-10-09 11:51:27 · 116 阅读 · 0 评论 -
算法题:122.买卖股票的最佳时机 II (贪心算法解决股票问题)
这道题是贪心算法的中级难度练习题,由于题目设定,整个价格都是透明的,这里并不涉及需要预测股票涨势的问题。解决思路不难,就是一旦股票价格开始下降了就买入,一旦上升了,就赶紧卖出。原创 2023-10-07 14:06:39 · 831 阅读 · 1 评论 -
算法题:738.单调递增的数字(贪心算法解决序列问题)
这道题参考了一位网友的思路,采用了贪心算法+动态规划,具体思路如下:1、从高到低遍历数字的每个位数,找到第一个数值递减(=),就得到了我们要的结果。原创 2023-10-07 10:26:34 · 239 阅读 · 0 评论 -
算法题:376.摆动序列(贪心算法解决序列问题)
这道题是一道贪心算法题,如果前两个数是递增,则后面要递减,如果不符合则往后遍历,直到找到符合的。原创 2023-10-07 05:04:31 · 467 阅读 · 0 评论 -
算法题:860.柠檬水找零(典型的贪心算法问题)
这道题就是纯贪心算法题,遍历每个顾客,先把钱收了,如果是10块钱就判断手里头有没有5元用于找零;如果是20块钱,先判断是不是有10元+5元,如果没有就再判断是否有3个5元。没有的话就直接返回 False。原创 2023-10-07 04:24:52 · 657 阅读 · 0 评论 -
算法题:1005.K 次取反后最大化的数组和(典型的贪心算法问题)
1、首先排序,然后从最小的负数开始一一变为正数,如果遍历到正数了,而k的次数没用完,如果剩余的k是偶数次,则直接可以退出了;如果k是奇数次且nums内有0元素也可以直接退出程序;如果k是奇数次且nums里面没有0元素,则挑一个最小的正数,将其置为负数,其实也就是比较正在遍历到的数和前一个数的大小,小的那个就是nums数组里的最小正数。2、还有一种情况就是,数组已经遍历完了,k没用完,这个也很简单,直接对数组的最后一个数,也就是数组里面最小非负数进行操作,如果其为0则直接退出,如果是k是偶数也可直接退出,原创 2023-10-07 03:50:22 · 137 阅读 · 0 评论 -
算法题:455.分发饼干(典型的贪心算法问题)
这个题目是贪心算法的基础练习题,解决思路是排序+双指针+谈心法,先将两个数组分别排序,优先满足最小胃口的孩子。原创 2023-10-07 03:06:16 · 351 阅读 · 0 评论 -
算法题:11.盛最多水的容器(贪心算法&双指针问题)
这个题目乍一看就是双指针,没想到官方解答也是双指针,我在官方的基础上优化了一下下,左右两边各一个指针,每次移动短的那一头的时候,不是移动一格,而是找到比短的那一头要长一点的,再进行比较。原创 2023-10-05 21:15:36 · 808 阅读 · 0 评论 -
算法学习——“原地哈希法” (LCR 120. 寻找文件副本,41. 缺失的第一个正数)
算法学习——“原地哈希法”,这个方法名是一名网友给起的,很形象。简单理解就是,在一个数组中,将数值为 a 的元素放到索引为 a 的位置上去,这是一种降低空间复杂度的方法,在一些有条件限制的场景中非常适用。下面给两个力扣的例子进行详解。原创 2023-09-24 01:59:50 · 166 阅读 · 0 评论 -
因子与质因子的关系
因子与质因子的关系原创 2023-09-23 19:10:42 · 136 阅读 · 0 评论 -
刷算法题心得:python 中遍历字典key的时候用 dic.keys() 比 dic 要慢
刷算法题心得:python 中遍历字典key的时候用 dic.keys() 比 dic 要慢原创 2023-09-21 14:35:19 · 45 阅读 · 0 评论 -
853. 车队【每天一道leetcode题】
853. 车队【每天一道leetcode题】原创 2022-11-19 01:15:04 · 176 阅读 · 0 评论 -
376. 摆动序列【每天一道leetcode题】
376. 摆动序列【每天一道leetcode题】原创 2022-11-18 17:55:44 · 127 阅读 · 0 评论