- 博客(22)
- 收藏
- 关注
原创 LeetCode-15 三数之和
然后去寻找与这个数相加之和为0的两个数。如果数组是无序的,那么寻找这两个数需要O(n^2)的时间复杂度。而如果数组是有序(假设升序)的,我们便可以声明两个指针left和right分别指向头尾。直接三层for循序枚举时间复杂度O(n3)太高,一定会超时。这题可以使用双指针法来做到O(n^2)的时间复杂度。0,则说明总和比较大,right应该向左移动;,则说明总和比较小,left应该向右移动;由于题中还要求不可包含重复的三元组,所以得。注意:答案中不可以包含重复的三元组。在遍历数组时,固定一个数。
2023-02-16 14:54:01
648
原创 LeetCode215 数组中的第K个最大的数
所以堆的根节点(顶端)是该堆中最大或者最小的节点。根节点最大的堆被称为大顶堆,根节点最小的堆则是小顶堆。大多数排序算法的时间复杂度都是O(nlogn)或者O(n^2),所以排序后再输出。了,就将堆顶的元素移出。因为每次移出的都是当前堆中的最小元素,也就是说在。2.其次堆中某个节点的值总是不大于(或不小于)其父节点的值。的小顶堆,依次将数组中的元素入堆,如果超过堆初始大小。请注意,你需要找的是数组排序后的第。次移出堆顶后,此时的堆顶就是第。个最大的元素,而不是第。小的数,也就是我们要的第。
2023-02-15 20:43:42
276
原创 Spring注解之Service详解
使用Service注解的服务类为其他组件提供了一种复用业务逻辑的方法,能够减少重复代码的编写,提高代码的可维护性。常常与控制器组件和逻辑层的请求处理组件搭配使用:在控制器组件中注入服务类实例,然后使用该实例调用服务类的业务逻辑,将结果返回给请求处理组件。
2023-02-11 05:00:00
28198
4
原创 Lombok与建造者模式详解
Lombok 是一个 Java 编程语言的库,它可以帮助我们生成一些常见的代码,例如 Getter、Setter、toString 等方法,以及构造方法、Builder 等模式,大大减少代码量,提高开发效率。return age;而加上@Data注解后,我们就可以不用再写 Getter、Setter、toString 等方法,Lombok 会自动为我们生成这些代码,而且这些代码都是符合 Java Bean 规范的。
2023-02-10 13:19:22
847
原创 LeetCode 1604 警告一小时内使用相同员工卡大于等于三次的人
Map.Entry是java.util包中的一个接口,表示Map中的一个实体(键值对)。而map.entrySet() 返回一个Set集合,包含了所有map中的键值对关系映射,每一个映射关系封装在一个Map.Entry对象中,该对象可以通过getKey和getValue方法获取键和值。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。2.接下来对这个map进行遍历,如果该员工的时间list每3个的间隔时间超过了一个小时,那么就把他记录到结果集返回。内使用员工卡的时间。
2023-02-07 17:42:41
122
原创 LeetCode-1145 二叉树着色游戏
每一回合,玩家选择一个被他染过色的节点,将所选节点一个 未着色 的邻节点(即左右子节点、或父节点)进行染色(「一号」玩家染红色,「二号」玩家染蓝色)。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。现在,假设你是「二号」玩家,根据所给出的输入,假如存在一个 y 值可以确保你赢得这场游戏,则返回 true;「一号」玩家给值为 x 的节点染上红色,而「二号」玩家给值为 y 的节点染上蓝色。若两个玩家都没有可以染色的节点时,游戏结束。
2023-02-05 13:06:41
169
原创 LeetCode-14 最长公共前缀
二分法为什么比模拟法的效率高,是因为模拟法搜索最长公共前缀时搜索的“步幅”是。是否是某一子串的公共前缀可以用String类中的indexOf函数。显然,最长公共前缀的长度不会超过字符串数组中的最短字符串的长度。中第一次出现的位置的索引,如果返回值不是 0,说明。时,仍然有可能存在公共前缀。的条件,则不会在此情况下检查存在公共前缀的可能性。编写一个函数来查找字符串数组中的最长公共前缀。为最长公共前缀右区间端点,判断前缀。在这道题中,显然我们需要截取的前缀。是否为所有的字符串中的公共前缀。
2023-02-01 10:42:21
146
原创 LeetCode-1669 合并两个链表
输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]解释:我们删除 list1 中下标为 3 和 4 的两个节点,并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。输出:[0,1,2,1000000,1000001,1000002,5],它们包含的元素分别为。之后的那个节点,将其分别与。的全部节点都删除,并将。接在被删除节点的位置。
2023-01-30 13:01:14
89
原创 LeetCode-11 盛最多水的容器
假设横轴非常非常宽,对于体积影响最大的就变为了最短的木板长,于是我们的寻优搜索就变为了找到一块尽可能长的木板。于是很容易想到双指针法,一前一后记录横轴长和比较出最短木板长度。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。每次遍历,比较头尾指针位置元素大小,元素较小的指针向中间移动。这样就能找到尽可能长的木板,从而得到最大体积。输入:[1,8,6,2,5,4,8,3,7]轴共同构成的容器可以容纳最多的水。
2023-01-29 20:35:41
93
原创 LeetCode-2153 统计星号
本题最直观的思路就是遍历统计星号的数目,但是需要满足其不在一对竖线之间的条件。问题就转化为了如何判断不在成对竖线的状态。,每 两个 连续竖线 ‘|’ 为 一对。换言之,第一个和第二个 ‘|’ 为一对,第三个和第四个 ‘|’ 为一对,以此类推。请你返回 不在 竖线对之间,s 中 ‘*’ 的数目。注意,每个竖线 ‘|’ 都会 恰好 属于一个对。同时,第三条和第四条竖线 ‘|’ 之间的字符也不计入答案。解释:第一和第二条竖线 ‘|’ 之间的字符不计入答案。不在竖线对之间总共有 2 个星号,所以我们返回 2。
2023-01-29 14:10:15
232
原创 LeetCode-53 最大子数组和
定义一维的dp数组,dp[i]表示下标为i结尾的nums数组最大连续子数组和,并维护一个全局的最大值res。
2022-11-21 15:58:59
172
原创 LeetCode-206 K个一组反转链表
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。在做过反转链表后,这题最直观的解法就是将其拆分为K个子链表进行反转,再依次将这些子链表拼接起来。输入:head = [1,2,3,4,5], k = 2。输出:[2,1,4,3,5]
2022-11-16 16:37:16
251
原创 LeetCode-15 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请返回所有和为 0 且。暴力求解三重for循环时间复杂度为O(n^3),很容易超时。哈希法可以存储表示中间和的数以减少时间复杂度,但是在HashMap中去重也很麻烦。所以这道题最适合的就是双指针法。排序时间复杂度O(nlogn),遍历时间复杂度O(n^2)
2022-11-16 10:18:31
149
原创 LeetCode-206 反转链表
第一种方法将节点的逆向链接放在了下一次迭代,而头插法比较直观,在一轮循环中就完成了局部的逆向链接。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。新建一个dummy节点,使用头插法将遍历的节点从头插入,完成倒序。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
2022-11-13 15:24:35
175
原创 多线程基础
线程是程序执行的最小单位。如果说QQ是一个进程的话,它就像一个容器,管理和分配着资源。QQ能同时做很多事情,比如接收消息,发送消息,在内置浏览器里冲浪。而同时进行这些事情就需要线程这个概念了。也就是说。
2022-11-10 10:17:12
149
原创 Supervised Contrastive Learning
这篇文章非常有意思,在代表自监督领域的对比学习方法中提出了有监督的对比学习框架。Introduction交叉熵损失函数有缺乏对嘈杂标签鲁班性,差边距等缺点,但是很多替代方案始终不能泛用地替代它。此工作中提出了一种监督学习的损失,通过利用标签信息建立对比自监督信息。在将不同实例拉开的同时还使来自同一类的更紧密地结合在一起。看图一目了然:左边是传统的自监督,可以看到在嵌入空间内同类样本也被拉开了,理论上我们希望同类的特征应该紧靠一起,这就是作者要这么做的原因把。有监督对比学习的正负实例的选择策略也不同:
2022-05-19 16:14:43
1798
1
原创 spark-class:行71: /xx/xx/xxx: 没有那个文件或目录 /xx/xx/xxx:行96: CM
在linux系统上配置spark出现的问题,如下:显然,问题出现在/export/server/jdk/bin/java 目录,spark-class没有找到jdk环境。可是jdk安装了呀,于是查看文件目录确认发现果然不对劲:原来是没上软链接,那好解决,ln -s 补上软链接就行了!开启spark,success!...
2022-04-15 19:48:59
5757
原创 Continual Learning with Deep Generative Replay笔记
1.引言人工神经网络容易发生灾难性遗忘。常常通过重放过去任务的真实样本来联合优化网络参数,但这种方法占用内存,可能在现实部署中不顺利。基于脑科学的研究指出,人脑皮层的海马体不仅仅是一个简单的记忆回放缓冲区。记忆痕迹的重新激活会产生相当灵活的结果。记忆的改变和重新激活会导致巩固记忆的缺陷,而共同刺激海马体中的某些记忆痕迹会产生从未经历过的‘’虚假记忆‘’。这些特性表明,海马体与生成模型的并行性比回放缓冲区更好(这里解释为什么用生成式数据替代真实样本,源自于海马体研究的启发)所以我们提出了一种方法来顺序训练
2022-03-17 15:54:35
6149
原创 Learning Without Forgetting 笔记及实现
Learning Without ForgettingLWF简介方法对比LWF算法流程总结实现LWF简介LWF是结合知识蒸馏(KD)避免灾难性遗忘的经典持续学习方法。本质上是通过旧网络指导的输出对在新任务训练的网络参数进行平衡,从而得到在新旧任务网络上都表现较好的性能。方法对比a.从头开始训练b.微调:在旧任务的网络基础上以较小的学习率学习新任务 另一种意义上的Intializiation?c.联合训练:使用所有任务的数据一起训练d.特征提取:将旧任务的参数固定作为特征提取器,添加新的层
2022-03-14 20:18:12
8357
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人