自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Leetcode15 三数之和

好心累的一题 去重的过程有点复杂了。

2024-03-30 14:53:07 89

原创 项目的结构

2024-03-18 17:59:27 79

原创 好帖子自存(小肥猫自用版

目录计网计算机网络整理笔记 - 专题 - 简书 (jianshu.com)八股 MySQLMyBatisSpringBootRedisTCP 三次握手和四次挥手(传输层) | JavaGuide10万字208道Java经典面试题总结(附答案)_java面试题-CSDN博客java八股文面试总结_java面试八股文-CSDN博客Mysql索引:图文并茂,深入探究索引的原理和使用 - 知乎 (zhihu.com)MySQL事务隔离级别和实现原理(看这一篇文章就够了!) - 知乎 (zhihu.com)MyBa

2024-03-17 18:52:35 71

转载 死锁的介绍

在这个例子中,死锁的根本原因是两个线程以不同的顺序请求相同的资源。这种锁请求顺序的不一致性是产生死锁的关键因素。讲得特别特别的好 常看常新。

2024-03-16 00:46:22 15

原创 CPU、RAM、外存

RAM(Random Access Memory)是一种计算机存储设备,它可以被随机访问,意味着CPU可以直接读取存储在任何地址上的数据,访问时间与地址无关。RAM作为主存储,用于快速处理和临时存储,而外存储则用于持久保存和大量数据存储。在实际使用中,通常会将应用程序和操作系统装载在外存储中,当需要使用时,计算机会将它们加载到RAM中进行快速访问和处理。CPU,全称为中央处理单元(Central Processing Unit),是计算机的主要硬件之一,也是计算机执行程序指令和处理数据的核心部件。

2024-03-16 00:12:15 1368 1

原创 DTO的使用

DTO,或称为数据传输对象,是一种设计模式,用于在不同的软件系统或应用层间传输聚合了多个数据的对象。它们通常是简单的Java对象,包含一些属性及其对应的getter和setter方法。DTO的主要目的是封装数据,使得数据可以从系统的一部分安全、高效地传输到另一部分。DTO在软件开发中是一个非常有用的模式,特别是在需要跨网络边界或服务边界交换数据时。它们帮助开发者以一种安全、高效的方式传输数据,同时还可以提高应用的解耦性和灵活性。

2024-03-15 01:42:12 421 1

原创 Springboot注解总结

Spring Boot是一个非常流行的Java框架,用于创建微服务。它提供了快速开发、配置简化和生产就绪功能的优点。在Spring Boot中,注解(Annotations)扮演了非常重要的角色,它们提供了元数据,允许开发人员以声明的方式编写少量的代码来实现大量的功能。下面是一些Spring Boot中最常用的注解及其代码示例。

2024-03-15 00:15:18 125 1

原创 Vue快速入门

Node.js是一个开放源代码、跨平台的JavaScript运行时环境,允许开发者在服务器端运行JavaScript代码。这是一项创新,因为在Node.js出现之前,JavaScript主要被用于在浏览器中编写客户端脚本。Node.js的出现使得JavaScript也能够被用于服务器端编程,大大扩展了JavaScript的应用范围。:这使得Node.js特别适合构建高性能的网络应用程序。这种模型允许Node.js在处理大量连接时保持轻量和高效,即便是在每个连接只需要非常少的实际计算时也是如此。

2024-03-14 12:23:02 528 1

原创 Leetcode 75 颜色分类

这个问题可以通过一种称为“三指针”方法来高效解决。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。用于当前遍历的元素。这一题感觉就是指针的加减绕得好晕啊。必须在不使用库内置的 sort 函数的情况下解决这个问题。给定一个包含红色、白色和蓝色、共。用于蓝色(2)的正确位置交换,而。用于红色(0)的正确位置交换,分别表示红色、白色和蓝色。i(指向当前的元素)

2024-03-13 16:18:37 194

原创 滑动窗口专题

滑动窗口技术之所以强大,是因为它利用了窗口的边界来减少不必要的计算,通过只在窗口的一侧添加或删除元素,它能够在不重新遍历整个数组或字符串的情况下,快速更新窗口内的信息。滑动窗口技术是一种强大的算法策略,主要用于解决涉及连续子数组或子字符串的问题,尤其是当这些问题要求优化时间复杂度时。,这显然是错误的,因为我们已经移除了第一个 'm' 来处理第二个 'm' 的重复情况。表示遍历到的当前位置,它们共同定义了滑动窗口的边界。变量表示当前考虑的不含重复字符子串的起始位置,的较大值,以保证窗口始终向前滑动,不回退。

2024-03-13 15:18:52 566

原创 Leetcode 136 只出现一次的数字

给你一个整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

2024-03-12 17:53:49 307 1

原创 LeetCode 283 移动零

这题思路很传统,就是普通的数组+双指针,但注意快慢指针的初始化,这里之后再总结一下。(第一次slow赋值为0,fast赋值为1 这样赋值如果在没有零的用例里,例如 [1,2] ,这样输出就变成[2,1]了 ,两数会交换 )移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。

2024-03-12 16:48:01 117 1

原创 LeetCode 128 最长的连续序列

将所有元素添加到HashSet去重:如果数组中包含重复的元素,HashSet会自动去除这些重复项。这样做可以避免在寻找连续序列时对同一个数字重复计算。快速查找HashSet的查找时间复杂度为 O(1),这意味着无论集合中有多少元素,查找操作的速度都非常快。在这个问题中,我们需要频繁地检查某个元素是否存在于集合中,特别是在判断连续序列时,能否快速判断一个元素是否存在直接影响算法的整体效率。确定序列起点:算法的核心在于找到连续序列的起点,然后从这些起点开始向后寻找连续的元素。使用HashSet。

2024-03-12 16:29:02 616 1

原创 Leetcode 49. 字母异位词分组

给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的所有字母得到的一个新单词。哈希表首先思考键和值是什么,这个方法首先创建了一个哈希表来存储每一组字母异位词,键是每个字符串排序后得到的结果,通过这种方式,我们可以有效地将所有的字母异位词分到同一组内。最后,我们返回这个哈希表中所有的值即可,这些值就是分组后的字母异位词列表。

2024-03-12 12:43:20 912 1

原创 Leetcode1 两数之和

思路绕了一下,哈希表最主要的就是想清楚key和value到底存什么,以 nums = [2,7,11,15], target = 9为例,key存入了nums[i],value 存了i索引。然后在循环体中加入判断——运用遍历到的数据nums[i], 判断map中存在(target-nums[i])这个key吗,存在就输出对应的数组(一个通过key值取出对应的value(map.get(key)),一个是当前的索引)。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。

2024-03-12 00:44:02 92 2

原创 Leetcode 20 有效的括号

思路不难,但要注意记得在stack.pop()进行空栈判断,否则可能出现空栈异常,而且比较完栈顶元素要出栈,所以是pop(),不是peek(),判断字符串是否有效。

2024-03-12 00:22:55 138 1

原创 字符串相关的基本操作

toString()

2024-03-08 15:38:51 1668 1

原创 Springboot +vue概述笔记

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境。它可以让你在客户端和服务器之间发送异步 HTTP 请求。Axios 提供了许多强大的功能,如拦截请求和响应、自动转换 JSON 数据等,使得在处理 HTTP 请求时变得更加简单和灵活。建立在测试类的代码//还不太懂 再补一补bean Autowired这里。不用 application prope那个。把名字和真实资源形成映射。问:这里的:是什么意思。

2024-03-07 22:35:35 229 1

原创 “==“,“Array1.equals(Array2)“,“ Arrays.equals(arr1, arr2)“

操作符比较两个数组对象时,它检查的是对象引用是否相同,而不是数组内容是否相等。这意味着,即使两个数组包含完全相同的元素,但只要它们是两个不同的对象(即在内存中的地址不同),使用。用于对象时,比较的是两个对象的内存地址是否相同,即它们是否是同一个对象的引用。因此,在数组的比较中,都不能用来判断两个数组的内容是否相等,它们只能用来判断两个数组引用是否指向同一个对象。,你只是在比较两个数组对象的引用是否相同,而不是它们的内容。因此,如果你的目的是比较两个数组的内容是否相同,应该使用。比较这两个数组会返回。

2024-02-25 05:08:19 298 1

原创 nums==null 和nums.length==0

是很有必要的,以避免在尝试访问数组内容或属性时抛出异常。如果数组已经初始化,但你需要检查它是否为空(即不包含任何元素),则应该检查nums.length == 0。在编写代码时,如果存在数组可能未被初始化的情况,检查nums == null。

2024-02-23 16:56:41 163 1

原创 Leetcode刷题 2、3、4的幂(231、326、342)

因为n和n-1的按位与为0,所以只需要判断按位与是不是0即可。但需要判断特殊情况,如n<=0情况。

2024-02-17 18:02:46 155

原创 Leetcode 162 寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回所在位置即可。你可以假设 nums[-1] = nums[n] = -∞你必须实现时间复杂度为 O(log n)的算法来解决此问题。

2024-02-17 16:25:03 581 2

原创 Leetcode240 搜索二维矩阵Ⅱ

1.比target大,就把最后一行去掉。(因为后面的数肯定比目前的matrix[i][j]大,更找不到target)2.比target小,就把第一列去掉。(因为后面列的数会比目前的matrix[i][j]大)(此处是第一列中最大值,最后一行的最小值)。因此分为几种情况:(可以看看这个图参考一下)本题的代码不复杂,主要是观察矩阵的结构,编写一个高效的算法来搜索。

2024-02-17 15:20:58 163 1

原创 Leetcode 155 最小栈问题

这题大体思路比较简单,因为时间复杂度要求是常数级别,因此不能用简单遍历的方法,但空间复杂度没有要求,因此可以借助辅助栈的形式。关键字确保每次调用都会创建一个新的对象。这些新创建的对象分别被赋值给。变量,因此这两个引用变量现在指向了实际的对象,而不再是。但自己写题的过程中,出现了一些报错。对象,你就可以安全地调用。被初始化并指向了实际的。, 等等,而不会遇到。

2024-02-15 20:49:58 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除