- 博客(26)
- 收藏
- 关注
原创 Leetcode 题解记录 239. 滑动窗口最大值
这道题读完后我们很容易先想到用排序和队列,每次滑动相当于左边出队右边入队,如果我们能维护一个有序队列,每次输出最大的队头,那么这道题就迎刃而解了。答案是否定的,因为直到新元素退出前它的优先级都盖过了老元素,那么这些又小又老的元素就可以直接丢弃了!另外因为窗口一直在滑动,时代一直在更迭,我们仍然需要判断队头的元素是否过期,并丢弃已经过期的大元素。接下来就遍历入队,每次清除队头下标超出窗口左边界的元素,达到窗口大小后就可以开始愉快的输出了!“滑动窗口最大值”这个问题的本质,可以被抽象为:“如何在一个。
2025-09-09 12:54:06
269
原创 Leetcode 题解记录 541. 541. 反转字符串 II
第一次AC用的是不太简洁的方法,因为担心最后一次的异常处理问题,所以每次只让下标前进k步,用一个二进制数来表示当前这个阶段要不要reverse。如果要的话就判断是否到string的末尾,做一次特殊值处理。一方面避免这种坑点,一方面后面再用到字符串长度可以少打几个字符。(Gemini老师表示同意)核心思想是通过比较i + k 和总长度的大小来确定右边界。又是一道简单题,但居然也能学到东西?刚写完觉得贼巧妙,一看官解有点想笑。不写不知道,一写吓一跳。这样一来应该每次先写一行。
2025-08-28 20:25:23
263
原创 Leetcode 题解记录 34. 反转字符串
设置一头一尾两个指针,向中间一边走一边交换就行了。我最开始的思路是用于一个for循环从头遍历,根据总长度算出它对称的元素下标,确实没有双指针法清晰优雅哈哈。感觉Gemini老师写的代码还是看着舒服啊,古法编程真的有必要存在吗。(又是双指针法,这个世界就是一个巨大的双指针?主要记忆两个标准库函数的使用,一个是交换两元素。一个是直接cheat做完本题的办法。
2025-08-28 16:30:36
387
原创 Leetcode 题解记录 18. 四数之和
因为如果target是负数,nums[i]也是负数,此时就算满足nums[i] > target,后面仍然可能有负数让和更小也就是更接近target。容易犯错误的点主要在第三步,要考虑清楚边界条件,尤其像这道题在去重时,判断固定的第二个元素的下标也就是j的时候应该与i + 1相比而不是1。这是相对位置和绝对位置的区别,一定要注意。还有一个细节就是最终的和可能会超过int的范围,最好用long long来存。正确的做法在代码注释中讲解。差不多,感兴趣的朋友可以去看我之前发过的博客。这道题思路跟我之前发过的。
2025-08-28 16:07:07
243
原创 Leetcode 题解记录 15. 三数之和
我们回忆一下两数之和的做法,给定一个整数target和一个超大数组,问你有多少种组成target的元组。我们很快发现暴力遍历关键的劣势,在于多次重复遍历已经遍历过的元素。但这道题问的是元组个数,所以存储的key-value应该是和-频数。总结下来这道题的难度确实不算太大,但要考虑的边界条件等细节很多,且对于去重的实现也需要想清楚。那么这道题同样可以降维成寻找两数之和满足target的元素,但这道题要的是元组本身,且。我们可以先将数组按升序排序,然后固定第一个数,从后面序列的。又是经典的n数之和的变体。
2025-08-28 10:17:09
326
原创 Leetcode 题解记录 454. 四数相加 II
逆天复杂度,肯定超时了。大概能想到是拆两半,用哈希表做查询来降低复杂度,但不看答案思路还是不清晰。当时还考虑了正负值分界的角度,但找分界依然需要一次遍历,不够简洁。接下来遍历另外两个vector,计算和,再查询这个和的相反数在刚刚的map中出现了多少次,这也就对应成功元组的次数了,累加起来就ok了。用一次遍历就可以在一个unordered_map中存储nums1,nums2的和的所有可能以及对应的频数。正确的思路应该是用分治的思想,其中两个的和应该等于另外两个和的相反数。第一次组会无桌AC(看提示版)
2025-08-22 15:46:26
147
原创 Leetcode 题解记录 1. 两数之和
(神奇宝贝BGM)unordered_map!底层实现哈希表,元素无序,非常适合用来做本题的Cache!缓存命中就可以直接输出结果,没命中也不亏!因为查询效率只需要O(1),太方便啦!Leetcode开篇第一题!除了暴力枚举还有什么更优的解法呢?unordered_map的操作非常简单,常用的有存储和查询。
2025-08-22 11:26:56
181
原创 Leetcode 题解记录 202. 快乐数
发现头脑不清醒写代码就会像梦话哈哈哈哈哈。不过状态有起伏是非常正常的,放平心态做到当下的最好就好啦。其实很多时候“状态”取决于心态,今天明明觉得不太清醒但其实AC的都很快哈哈,加油!前提是像序列像单链表一样无分支,有尽头(收敛),而且还能通过第三个指针找环的入口(太牛了)。哈希表常规思路,这里不再赘述。的题目,其实都可以用Floyd判环来做!while循环记得更新变量!
2025-08-22 10:29:03
149
原创 Leetcode 题解记录 349. 两个数组的交集
补一下两天前的题解(是的没错我摆了两天,因为要给实验室交差,太累了兄弟们)我发现交给G老师review代码这个pipeline很好的一点在于,你可以针对性的解决自己的疑惑,而不是面对千人一面的冰冷题解扶额苦思。去他的网脱,去他的玫瑰糠疹,老子要自由。由于两序列都已经升序排列了,我们用两个指针分别从头开始两两比较,如果不相等就说明要让小的变大(相应指针右移),若相等则两个指针都右移。由于set底层是红黑树,unirdered_set底层是哈希表,两个都不是连续内存存储,所以都不能用[]下标访问。
2025-08-21 11:22:35
402
原创 Leetcode 题解记录 242. 有效的字母异位词
为了避免来回遍历,那就直接把他们理顺了再挨个比啦!C++为所有模板库都提供了"=="等全套运算符,再也不用被C反人类的设计坑啦!比较trick的方法,因为题目中只有小写字母所以能用。维护一个长度为26的vector, 计算每个字母出现的顺序就行了。这里主要复习一下几种哈希表:大类分为Set和Map。前缀又有multi和unordered_。为了记忆我也填一遍表吧。简简单单一道题,三种思路。主要是为了练习哈希表。(可是某院校居然要考hard难度的题啊这啥时候是个头啊)
2025-08-19 10:56:25
245
原创 Leetcode题解记录 142. 环形链表 II
如果存在环,因为两个指针的速度差永远是一格,所以给足时间他们是一定会相遇的。现在是先自己写一遍,然后让G老师评价一下改改代码细节,或者提供新算法,学会了自己再写一遍,然后写博客做输出加深印象+整理思路,希望有用!看似平平无奇,实则我们发现,如果此时再让第三个指针从头节点出发,和slow一起一次走一格,他们必将在环入口相遇!开始我的思路是用一个循环快慢指针先走,后面循环退出了回去找原因,看是因为到头了还是相遇了,这样还是有点繁琐。首先在起点初始化一快一慢两个指针,快指针一次走两步,慢指针一次一步。
2025-08-17 16:35:01
238
原创 Leetcode 题解记录 07. 链表相交
又是一个经典的双指针应用,第一次AC居然是暴力把两个链表的节点地址读进数组再倒推……不过没有一直纠结最优解法,先写出来一种AC再说,策略上也是值得表扬的。记得本科程设还考了这道题。当时是分别遍历两个链表得到lenA、lenB,再令两个指针从剩余长度相同的位置一起走,直到两个指针指的同一个地址或到尾部。双指针法最简洁,但感觉不是正常人能一次想出来的。核心想法其实跟上面的相同,只是利用距离相同让两个指针做“追及”,最后一定会在相交节点相遇。这里的应用场景是对“同一个变量”进行操作,且判断条件简单。
2025-08-17 11:06:19
165
原创 Leetcode 题解记录 19. 删除链表的倒数第 N 个结点
虽然是好几年前数据结构课上讲过的题目,印象深刻。用双指针法,品编程之美。时隔多年再次感叹,这方法真漂亮!
2025-08-16 15:41:57
105
原创 Leetcode题解记录 59. 螺旋矩阵 II
实际上换向条件就两个:下一块越界或者已经被访问过了。需要换向就换向,然后按照当前方向step步进就可以了,这里想法跟官方一样纯模拟。期间也有想过和K神一样利用边界来解题,但主要是想处理第一圈,但没有想到其实每一圈都是边界,这样就可以统一处理了。简单模拟但做了一个半小时……主要原因是没想清楚换向该如何处理,担心耗费太多ifelse语句。循环过程中找到这种变化中不变的pattern,就会很好写!
2025-08-15 12:26:18
133
原创 Leetcode随笔 209. 长度最小的子数组
虽然逻辑上加不加sum < target这一语句这道题都能过,但是我发现加了以后代码运行速度反而提高了很多!应该是因为比较语句比内存读写要快很多,感觉408的一切又回来了哈哈哈哈。这是一期leetcode刷题随笔。与代码随想录的题解基本一致。唯一不同的地方也是想发博客与大家分享的。虽然最近并不是所有事情都顺心,不过至少可以戴着镣铐跳舞!代码行数跟运行效率并不是完全正比的关系。没错,时隔多年我又更新了。
2024-06-26 10:44:01
258
1
原创 计算机专业如何避免一边骑车一边架笔记本
清华大佬架着笔记本骑车的事估计大家都有耳闻,今天发现了解决办法,虽然可能很多人都知道,但还是贴出来分享下,应该会对计算机专业的同学有所帮助。在设置中选择电源和睡眠选择右侧其他电源设置选择左边栏的关闭机盖功能就可以修改关闭盖子时的操作了,这里修改为不采取任何操作。这样就可以愉快的把笔记本放包里骑车回宿舍,也不用担心程序会中断了!...
2022-06-21 10:18:06
233
原创 V-REP在Ubuntu远程服务器(有跳板机)上的运行方法
最近需要跑一个V-REP上的机械臂抓取实验,需要用强化学习进行训练。V-REP仿真与python协同需要在同一个主机上运行,而强化学习需要的算力PC机的CPU无法提供,所以只能在Ubuntu远程服务器上进行实验。而使用vscode运行时发现,由于实验室的服务器是没有图形界面的,所以无法直接运行V-REP,查了一堆解决办法后决定采用mobaxterm进行图像回传的方式来跑,而直接跑的话会出现开始仿真后直接闪退的方法,下面给出可行的方法。配置mobaxterm、ssh等的方法可自行搜索。...
2022-06-13 10:52:59
626
5
原创 本科毕设相关工作总结
毕设和PRCV初稿都告一段落,觉得是时候写一篇小总结为这段时间的工作收个尾了。想到什么就写什么吧!关于日志写日志真的是一件很重要的事情。无论是实验数据的记录、以往代码或者跑出来的模型的保存、还是对一些遇到的问题的解决方法,都是工作中很重要的部分。希望自己以后能够养成有条理地保存目前完成的工作的习惯,并且能把一些比较重要的问题的解决写日志记录下来,这样不仅能让自己避免二次焦头烂额,还能帮助到有类似问题的人。关于毕设论文写作算是除了疯狂注水的公选论文以外正式中文论文的处女座吧。主要的经验:首先要确定
2022-05-20 09:33:06
351
原创 离线安装Linux包的方法——以sklearn为例
千呼万唤始出来,在一万零五百八十六个小时之后终于成功在离线远程服务器上安装好了sklearn,所以虽然火烧眉毛了还是决定写篇博客分享给有需要的人。包的.whl文件直接在https://pypi.org/上搜索下载就好,注意要搜索全名scikit-learn!你搜sklearn是找不到合适的包的。如图,选择第一个就好:接着要匹配你的系统架构和python版本等等,自己确认一下。注意如果没有找到合适的话要在左边点Release history找之前的版本,一般就会有了,像我的python版本是3.7,最新版
2022-05-16 09:32:24
4619
2
原创 win11华为matebookxpro蓝牙开关消失解决办法
win11华为matebookxpro蓝牙开关消失解决办法今天下午重新把休眠的电脑唤醒,发现蓝牙鼠标没有反应,检查后发现系统蓝牙开关居然消失了???这就是win11吗?有点想跑路了……辗转好几种解决方法都没能解决,后来用华为电脑管家检查驱动(贴一张现在的图指路)发现蓝牙检测报错,跟随官方解决办法:Windows+x选择设备管理器在“通用串行总线控制器"中找到感叹号设备禁用后立即关机(不能重启,亲测无效!),再开机,即可得到解决。...
2022-01-05 18:27:13
10705
2
原创 2021 PAT秋季 总结复盘
2021 PAT秋季 总结复盘这次考试真的是很有戏剧性,如此重要的日子居然被我记成了13号也是很离谱了,不过好在室友同学打电话提醒才急三火四跑回宿舍准备考试环境,虽说一直在安慰自己但肯定对心态还是有很大影响的。。所以各位重要的事情一定要确认再三做好准备工作。。结果还算比较理想,其实我一直觉得自己代码能力非常薄弱,这次考试能考到80分左右就算成功,最后取得97分的成绩真的是非常开心了(最后一题做出来的时候差点喊出来)。这次的结果也算是我的努力和考试题目相对容易的综合因素吧,在这里也感谢所有帮助过我的人和柳
2021-09-11 23:42:23
336
原创 PAT甲级 1003 Emergency (25 分) ——Dijkstra算法
PAT 1003 Emergency (25 分) ——Dijkstra算法一、题目要求1003 Emergency (25 分)As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each ci
2021-09-09 12:31:23
198
原创 PAT甲级 1021 Deepest Root (25 分)(非并查集)
PAT甲级 1021 Deepest Root (25 分)大佬们和算法笔记都给出了并查集的解法,而我在复习数据结构时,由于考纲不作要求而没有复习相关内容,故采用了自己的解法。关键步骤:如何判断所给的图是否为树。由于N个结点,N-1条边,故假设输入的图是树,从任意节点开始dfs都应该能完成遍历,否则题目转为计算图的连通块数。不过并查集还是要找时间好好学一下理论和实现的。代码如下:#define _CRT_SECURE_NO_WARNINGS#include<cstdio>#inc
2021-09-02 21:21:02
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅