- 博客(74)
- 收藏
- 关注
原创 java8常用的新特性
Lambda表达式是一种匿名函数,它允许我们以更简洁的方式编写代码。它的语法形式为(参数列表) -> {表达式或代码块}。Lambda表达式可以与函数式接口一起使用,例如Runnable接口。// 使用Lambda表达式创建一个线程");});
2023-09-10 17:39:21
457
原创 875. 爱吃香蕉的珂珂
链接:https://leetcode.cn/problems/koko-eating-bananas/根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。警卫已经离开了,将在。小时内吃掉所有香蕉的最小速度。来源:力扣(LeetCode)珂珂可以决定她吃香蕉的速度。
2023-08-30 22:39:26
363
原创 162. 寻找峰值
链接:https://leetcode.cn/problems/find-peak-element。首先初始化左指针为0,右指针为数组长度减1。然后,在每一次迭代中,我们计算中间元素的索引。,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。最终,当左指针和右指针相等时,我们找到了峰值元素的索引。峰值元素是指其值严格大于左右相邻值的元素。来源:力扣(LeetCode)就是峰值,我们将右指针移动到。的右侧,我们将左指针移动到。你必须实现时间复杂度为。的算法来解决此问题。
2023-08-29 12:37:24
269
原创 Picgo+Github图床上传图片超时报错Error: connect ETIMEDOUT 20.205.243.168:443\n at TCPConnectWrap.afterConnec
Picgo+Github图床上传图片超时报错Error: connect ETIMEDOUT 20.205.243.168:443\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1146:16)
2023-08-21 14:48:10
1303
6
原创 994. 腐烂的橘子
使用一个队列来保存腐烂橘子的坐标。首先,遍历整个网格,将腐烂橘子的坐标加入队列,并统计新鲜橘子的数量。然后,开始进行腐烂,每一轮从队列中取出腐烂橘子的坐标,遍历其四个方向,将新鲜橘子标记为腐烂,并将其坐标加入队列。每一轮腐烂后,分钟数加一。最后,如果还有新鲜橘子剩余,则返回 -1,否则返回腐烂的分钟数。链接:https://leetcode.cn/problems/rotting-oranges/直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。来源:力扣(LeetCode)的新鲜橘子都会腐烂。
2023-08-14 15:54:11
105
原创 适配器模式:将不兼容的接口转换为可兼容的接口
适配器模式是一种非常有用的设计模式,它可以解决不兼容的接口问题,使得原本无法合作的类能够一起工作。通过创建一个适配器类,将原本不兼容的接口转换为目标接口,适配器模式提供了一种灵活、可复用的方式来扩展功能或修改行为。在实际开发中,适配器模式经常被用于集成不同系统或库之间的接口,以实现系统的互操作性和可扩展性。
2023-08-09 10:02:16
582
原创 删除二叉搜索树中的节点
在二叉搜索树中删除节点是一个常见的操作,我们需要保证删除节点后的树仍然满足二叉搜索树的性质。本文将介绍如何在二叉搜索树中删除节点的算法和实现。一个更简单理解的方法。
2023-08-08 14:53:54
503
原创 工厂模式:简化对象的创建过程
简单工厂模式适用于对象类型较少且不会频繁变化的情况,但不符合开闭原则和单一职责原则。工厂方法模式适用于对象类型较多且需要灵活扩展的情况,但需要定义多个工厂类。抽象工厂模式适用于创建多个相关对象的情况,但增加新的产品族比较困难。工厂模式是一种简化对象创建过程的设计模式,它将对象的创建逻辑封装在工厂类中,使得客户端代码只需要与工厂接口进行交互,而不需要关心具体的对象创建细节。工厂模式具有封装对象创建过程、解耦客户端代码和具体类、可扩展性等优点。在实际的软件开发中,工厂模式被广泛应用于对象的创建和管理。
2023-08-04 10:38:02
203
1
原创 单例模式:保证一个类只有一个实例
单例模式是一种常用的设计模式,它可以确保一个类只有一个实例,并提供一个全局访问点。通过选择合适的实现方式,可以满足不同的需求。在使用单例模式时,需要注意线程安全性、序列化和反序列化、类加载器等问题。合理地使用单例模式可以提高性能,减少资源消耗,提高代码的可维护性和可扩展性。
2023-08-03 11:27:53
2090
2
原创 策略模式:优雅地实现可扩展的设计
首先,我们需要定义一个策略接口,该接口声明了执行计算操作的方法。在我们的计算器案例中,我们可以将该接口命名为,并声明一个calculate方法,用于执行具体的计算操作。然后,我们需要定义一个上下文类,该类持有一个策略接口的引用,并提供一个方法来设置和执行策略。在我们的计算器案例中,我们可以将该上下文类命名为。} }
2023-08-02 10:44:23
986
1
原创 模板方法模式:优化代码复用与扩展性的设计模式
`使用模板方法模式可以将算法的通用部分抽象出来,提高代码的复用性和可维护性。当一个算法的不同步骤有共同的结构或者流程时,可以使用模板方法模式来避免重复的代码,并且方便后续的扩展和修改。`
2023-08-01 10:29:07
435
3
原创 门面模式:简化复杂系统的接口调用
门面模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂子系统中的一组接口。门面模式通过封装子系统的复杂性,提供了一个更简单、更易于使用的接口给客户端
2023-07-31 11:25:23
435
原创 代理模式:控制访问的设计模式
代理模式是一种非常有用的设计模式,它可以实现访问控制、增加额外功能和远程访问。静态代理在编译时确定代理对象和真实对象的关系,而动态代理在运行时动态生成代理对象。动态代理又分为jdk动态代理和cglib动态代理,分别基于接口和类来实现代理功能。根据具体的需求和场景,选择适合的代理模式可以提高代码的可维护性和灵活性。区别:与适配器模式的区别适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。与装饰器模式的区别装饰器模式为了增强功能,而代理模式是为了加以控制。
2023-07-28 10:54:46
1019
2
原创 装饰者模式:动态地为对象添加额外的功能
装饰者模式的优点在于它提供了一种灵活的方式来给对象添加新的功能,同时保持了对象接口的一致性。它避免了使用继承来扩展对象功能的问题,避免了类的爆炸。同时,它也可以保持代码的可读性和可维护性。装饰者模式的优点在于它提供了一种灵活的方式来给对象添加新的功能,同时保持了对象接口的一致性。它避免了使用继承来扩展对象功能的问题,避免了类的爆炸。同时,它也可以保持代码的可读性和可维护性。总的来说,装饰者模式是一种非常有用的设计模式,它可以让我们在不改变现有对象的情况下,动态地给对象添加新的功能。通过组合。
2023-07-27 14:00:29
319
1
原创 394. 字符串解码
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。链接:https://leetcode.cn/problems/decode-string/此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。给定一个经过编码的字符串,返回它解码后的字符串。来源:力扣(LeetCode),表示其中方括号内部的。
2023-07-25 22:21:35
153
原创 2352. 相等行列对
给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。链接:https://leetcode.cn/problems/equal-row-and-column-pairs。如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。来源:力扣(LeetCode)
2023-07-17 16:46:41
303
原创 1207. 独一无二的出现次数
链接:https://leetcode.cn/problems/unique-number-of-occurrences。如果每个数的出现次数都是独一无二的,就返回。,请你帮忙统计数组中每个数的出现次数。来源:力扣(LeetCode)
2023-07-14 16:56:31
239
原创 1657. 确定两个字符串是否接近
给你两个字符串,word1 和 word2。链接:https://leetcode.cn/problems/determine-if-two-strings-are-close。操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )你可以根据需要对任意一个字符串多次使用这两种操作。操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb。
2023-07-14 16:54:36
708
原创 2215. 找出两数组的不同
链接:https://leetcode.cn/problems/find-the-difference-of-two-arrays。answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成的列表。注意:列表中的整数可以按 任意 顺序返回。来源:力扣(LeetCode)
2023-07-12 21:25:57
320
原创 724. 寻找数组的中心下标
如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。链接:https://leetcode.cn/problems/find-pivot-index。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。给你一个整数数组 nums ,请计算数组的 中心下标。来源:力扣(LeetCode)
2023-07-11 14:58:05
363
原创 1493. 删掉一个元素以后全为 1 的最长子数组
1493. 删掉一个元素以后全为 1 的最长子数组(面试题打卡/中等),暴力求解 + 优化。。。
2023-07-11 14:11:56
403
原创 实习中是怎么使用策略者模式的
难道直接在一个方法里写六七十条if语句,为了便于后续业务拓展,经过一些讨论后,我们使用了策略者模式,按照映射规则的特点将这些映射规则按类别大致分为了四类(策略具体实现类),这里暂定为(BranchA、BranchB、BranchC、BranchD),然后再在每个实现类里用正则匹配每条映射规则。第一次在工作中使用设计模式,这里仅写了大致方法,因为现实部门的复杂性,其实映射规则或多或少会不适用,实际开发中涉及了大量正则匹配、字符串操作与转换和额外的逻辑判断。
2023-07-09 15:10:23
312
3
原创 1456. 定长子串中元音的最大数目
链接:https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length。请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。英文中的 元音字母 为(a, e, i, o, u)。来源:力扣(LeetCode)给你字符串 s 和整数 k。
2023-07-09 14:09:42
202
原创 643. 子数组最大平均数 I
链接:https://leetcode.cn/problems/maximum-average-subarray-i。请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。给你一个由 n 个元素组成的整数数组 nums 和一个整数 k。任何误差小于 10-5 的答案都将被视为正确答案。来源:力扣(LeetCode)
2023-07-08 22:49:38
232
原创 1679. K 和数对的最大数目
链接:https://leetcode.cn/problems/max-number-of-k-sum-pairs。每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。给你一个整数数组 nums 和一个整数 k。返回你可以对数组执行的最大操作数。来源:力扣(LeetCode)
2023-07-08 22:00:46
250
原创 11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。链接:https://leetcode.cn/problems/container-with-most-water。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。来源:力扣(LeetCode)返回容器可以储存的最大水量。
2023-07-08 21:27:30
162
原创 392. 判断子序列
如果有大量输入的 S,称作 S1, S2, …, Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?链接:https://leetcode.cn/problems/is-subsequence。来源:力扣(LeetCode)
2023-07-06 19:59:22
120
原创 283. 移动零
链接:https://leetcode.cn/problems/string-compression。思路:先把不为零的提前,之后直接将0全补后面。来源:力扣(LeetCode)
2023-07-04 20:50:10
135
原创 334. 递增的三元子序列
链接:https://leetcode.cn/problems/increasing-triplet-subsequence。来源:力扣(LeetCode)你能实现时间复杂度为。
2023-06-27 21:08:29
133
原创 151. 反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。**进阶:**如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。**注意:**输入字符串。
2023-06-15 14:07:06
116
2
黑马点评详细总结(问题 + 踩坑点 + 解决思路)
2023-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人