- 博客(45)
- 收藏
- 关注
原创 算法学习 + 面试经典150题(区间部分) —— 区间篇
可以使用区间树的思想,即一棵二叉搜索树上面的每个元素都是一个区间,然后有时根据区间的左端点作为Key构造二叉搜索树,有时则会有其他构建树的方式,根据题目而定。当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生。所以我们首先要掌握BST的建树方式,以下提供两种方式:非递归与递归。类来存放你的日程安排。如果要添加的日程安排不会造成。判断一个新的区间是否与已有区间重叠。表示,这里的时间是半开区间,即。,则可以存储这个新的日程安排。
2025-01-02 12:59:12
328
原创 面试刷题 —— 二进制篇
1. 整数类型转为 String Integer.parseInt(a[i])2. 将这个int值作为参数传递给了方法。这个方法的功能是将传入的整数参数转换为对应的二进制表示形式的字符串。例如,如果传入的整数是5,那么会返回"101"这样的字符串结果。3. 字符串连接方法 String.join(), 通过某种方式将字符数组中的元素进行连接。
2025-01-01 10:31:42
454
原创 面试经典150题刷题——矩阵部分
核心在于要理解如何根据元素的下标判断当前元素属于哪一个box;使用map来记录当前行,列,box中该元素是否被使用了。,验证已经填入的数字是否有效即可。
2024-12-07 16:10:05
500
原创 面试经典150题刷题——双指针部分
注意for循环的坑,这里对字符大小写进行变化时,不可以使用另一种形式的for循环,因为for(char ch : chs)中的ch只是一个局部变量,并不会对chs数组中的元素进行更新。如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。轴共同构成的容器可以容纳最多的水。
2024-12-07 13:05:19
965
原创 字符串相关的算法思想
声明:文章中的大部分内容都是参考leetcode题解的。"aba" 同样是符合题意的答案。中最长的 回文子串。回文串的动态规划思想。
2024-12-05 11:26:16
228
原创 使用conda安装pytorch踩过的一些坑
如果要安装上面pytorch的相关参数信息时,在创建一个环境时注意选择 python=3.9的。关于镜像的问题参考文档:移除所有镜像后使用默认镜像。
2024-12-03 15:57:41
375
原创 代码随想录(十二)——图论
并查集可以解决的问题:两个节点是否在一个集合,也可以将两个节点添加到一个集合中。中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为。请找出一条可以删去的边,删除后可使得剩余部分是一个有着。) 的树中添加一条边后的图。添加的边的两个顶点包含在。边连接,并且没有顶点存在与自身相连的边。如果有多个答案,则返回数组。图中的边用一个二维整数数组。难点在于根的路径压缩的理解。图,其中每个顶点标记从。请你确定是否存在从顶点。树可以看成是一个连通且。并查集主要有三个功能。
2024-10-27 11:35:33
463
原创 动态规划 —— 0-1背包问题
总共有 3 个子序列的和为 9 :[4,5] ,[1,3,5] 和 [2,3,4]。最长的子序列是 [1,3,5] 和 [2,3,4]。
2024-10-26 12:05:38
295
原创 面试经典150题刷题——数组/字符串部分
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。
2024-10-16 21:32:12
591
原创 数学类的算法题
链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/solutions/2951086/shu-xue-deng-chai-shu-lie-xing-zhi-shi-j-0oid/,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行有 1 个球,第 2 行有 2 个球,第 3 行有 3 个球,依此类推。商业转载请联系作者获得授权,非商业转载请注明出处。颜色,且相邻行的颜色必须。返回可以实现的三角形的。
2024-10-15 10:45:20
182
原创 代码随想录(七) —— 二叉树部分
思路是翻转一个节点的左右孩子,处理逻辑应该放在左右孩子之前或之后,所以可以使用前序或者后序遍历,不能使用中序遍历,否则一个节点会翻转两次;求二叉树的最大深度就是在求根节点的高度,根节点的高度等于左右子树高度的最大值+1;很显然,这里在处理节点时需要有左右节点的高度,所以最好的选择是使用后序遍历。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。- 计算二叉树的高度:先计算左右子树的高度,再加上根节点自身的高度。
2024-10-14 16:06:18
1023
原创 代码随想录 (三)—— 哈希表部分刷题
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。在java中有就是,hashmap, LinkedHashMap, TreeMap ,HashTable 等总结一下,。但是哈希法也是,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!
2024-10-10 15:11:59
667
原创 代码随想录(一)—— 数组部分刷题
因为当left==right 时相当于同时指向一个元素,还可以进行比较;此时注意left,right的更新,只要保证更新后的区间是不含mid这个已经比较失败的元素即可如果是左闭右开[ left , right ) 那进入循环的条件就应该是 left < right;因为left == right 对于区间来说不存在元素;而且这种情况下,更新mid时如果是右边元素大了,那应该是把 right 更新为mid;说明mid这个元素不可取。
2024-10-09 17:53:00
2307
原创 动态规划 1.3 - 最大子数组和
链接:https://leetcode.cn/circle/discuss/tXLS3i/,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。商业转载请联系作者获得授权,非商业转载请注明出处。连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)是数组中的一个连续部分。152. 乘积最大子数组。
2024-10-08 15:38:52
311
原创 动态规划刷题记录——线性dp
逆向思维,以days数组中最后一个数据作为旅行的最后的一天,求到达这一天的最小花费;转化为求到达前一天,到达前七天,到达前一个月的最小花费。在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为。从dp数组的含义,初始值,遍历顺序,状态转移方程来考虑;通行证允许数天无限制的旅行。的通行证,那么我们可以连着旅行 7 天:第。中列出的每一天的旅行所需要的最低消费。你想要完成在给定的列表。
2024-10-01 14:52:33
377
原创 堆——刷题记录
如果有人离开了椅子(unreserve),后面来的人不需要新的椅子,直接坐空出来的椅子就行。链接:https://leetcode.cn/problems/seat-reservation-manager/submissions/569224284/对于 reserve,如果堆不为空(有空出来的椅子),就弹出并返回堆顶;否则把 seats 加一(添加一把新的椅子),然后返回 seats。如果有人进入了房间(reserve),我们可以添加一把新的椅子给人坐(如果没有空出来的椅子)。
2024-09-30 13:53:45
253
原创 java中的优先队列PriorityQueue——堆
PriorityQueue可以存储任意类型的元素,但在使用时通常存储实现了Comparable接口的对象,或者在构造PriorityQueue时提供一个Comparator对象来定义元素的优先级顺序。在默认情况下,它会按照元素的自然顺序进行排序,对于数值类型来说,较小的值具有较高的优先级,因此可以认为它是小根堆。它是无界的,这意味着可以向队列中添加任意数量的元素,而不会出现队列已满的情况。peek()方法用于返回队列的头元素,但不删除它,如果队列为空,则返回null。
2024-09-30 13:32:12
483
原创 栈刷题记录
你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表。请你返回记录中所有得分的总和。
2024-09-25 16:46:02
290
原创 关于Spring中自定义类注入的技巧
因为拦截器配置好之后需要启动,所以我们找到启动类,发现启动类上面有@Configuration表明这是一个配置类,被spring所管理,所以我们可以选择在这个类中引入stringRedisTemplate对象,然后使用@Resource注解进行注入;下面这个LoginInterceptor 拦截器类为自定义的,类上面并没有添加注解来把它交给spring进行管理,所以这里不可以使用@Resource与@Autowire注解来交给Spring自动注入stringRedisTemlate变量;
2024-09-24 22:10:09
204
原创 图论刷题记录
小镇法官就是出度为0,入度为n-1的那个顶点。【出度表示信任其他人,入度表示被别人信任】理解一下题意,就是说小镇上只有一个法官,这个人不会相信任何人,而其他人都会相信他;可以把镇上的信任关系抽象成一个图,只要检查这个图中每个顶点的出度和入度即可。如果小镇法官存在并且可以确定他的身份,请返回该法官的编号;传言称,这些人中有一个暗地里是小镇法官。
2024-09-22 11:16:26
301
原创 动态规划-打家劫舍类问题
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。之后,删除 2 获得 2 个点数。总共获得 6 个点数。偷窃到的最高金额 = 1 + 3 = 4。给定一个代表每个房屋存放金额的非负整数数组,计算你。删除 4 获得 4 个点数,因此 3 也被删除。返回你能通过这些操作获得的最大点数。,一夜之内能够偷窃到的最高金额。,你可以对它进行一些操作。
2024-09-21 22:08:03
470
原创 动态规划刷题记录
70. 爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶。
2024-09-20 20:08:13
285
原创 定长滑动窗口刷题记录
的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。时间复杂度:O(n)空间复杂度:O(1)
2024-09-20 14:29:30
747
原创 Maven创建javaweb项目出现的问题
在使用Maven添加模块创建javaweb项目时,可能会出现项目结构不正常的情况,此时就要把对应的项目文件夹给重新创建。如果此时web项目没有了蓝眼睛标志,则需要进行相应的设置。然后ok即可,如果发现版本没有修改成功,就把之前项目中的web.xml文件删掉,然后再重复刚才的删除添加操作即可。刚开始建立javaweb应用时会把上面的文件都放到web目录下,所以要进行两次修改,使其回到正确的位置。正确位置应该放在webapp-->WEB-INF下面;接下来就是要修改Web的版本以适应各种web应用开发需求,
2024-09-13 19:55:47
259
原创 关于数据库表设计学习Note
开头的表通常与生成(generate)相关,尤其是在一些代码生成器或自动化工具中。【自动化工具有关】这些表可能用于存储生成的代码、配置、模板或其他自动化处理所需的数据。例如,在一些项目中,开头的表一般是系统表,通常用于存储系统相关的信息。在看一些项目的表设计时,发现许多表以sys-,qrtz,gen来命名,不理解遂问AI,以下为解答。开头的表通常用于存储与调度作业相关的信息,例如作业、触发器、调度器状态等。表可能用于存储生成的实体类、数据库迁移脚本或其他与代码生成相关的信息。1. 在数据库中,表名以。
2024-09-12 18:51:25
192
原创 Maven刷新依赖的八种方式
8) 在7的步骤后执行File--->settings--->Build,Execution,Deployment--->Build Tools--->Maven--->Repositories--->选中本地仓库--->update--->ok。4) 点击本项目的pom.xml文件--->右键--->Maven--->Reload Project 刷新本项目的依赖。【会对当前名下的所有项目都进行刷新】刷新依赖的8种方式 【很多时候依赖没有导入成功,试下刷新的八种方式,Maven依赖爆红可太正常了】
2024-09-12 15:43:26
4183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人