- 博客(239)
- 收藏
- 关注
原创 【力扣hot100题】(108)找到字符串中所有字母异位词
一开始卡在怎么比较两个字符串是不是异位词卡了好久,后来看了答案才知道vector可以直接比较……
2025-12-28 21:35:20
22
原创 【力扣hot100题】(106)接雨水
方法是单调栈,每次遇到比前面更高的柱子就计算该柱子与前面最高的柱子之间的雨水。这题真的有点难,刷了第三遍了都没想出来。
2025-12-28 13:10:06
25
原创 【力扣hot100题】(105)三数之和
先按序排列,第一个指针正常从左往右,后两个指针按照双指针的做法,从两端开始向各自逼近。之前的题都是两个指针,这次要三个指针,但本质上还是双指针。
2025-12-28 09:09:43
104
原创 【力扣hot100题】(104)盛最多水的容器
之前做过就很好做了,首尾双指针,向各自的方向遍历(移动高度更小的指针),相当于贪心算法,因为每次缩圈只会得到更大的结果。
2025-12-27 20:09:49
62
原创 【力扣hot100题】(103)移动零
(参考了答案)原理是一快一慢指针,保证慢指针前面全是非零元素,快指针和慢指针之前全是0元素,每次保证快指针指向非零元素,慢指针指向零元素,交换快慢指针即可。其实最简单的办法是遍历一遍,记录出现的非零元素个数,每个非零元素放在对应个数的位置上。
2025-12-27 19:19:42
63
原创 【面试】彩讯股份HRBP一面
因为职位是和agent有关,所以面试的问题也是围绕agent。首先是问三个项目agent的具体框架和流程,这个提前准备了一下,所以都答上来了,就是自我感觉语速有些快了。接着主要是问第一个项目(基于Dify工具的项目),处理的是什么格式的数据(回答是excel还有pdf),以及是如何处理这些项目格式的(excel可以用pandas,pdf可以用pyPDF2)。
2025-09-19 17:18:18
492
原创 【力扣hot100题】(102)最长连续序列
先将所有元素放入set中(一次循环),之后遍历set(因为set是有序的),如果当前元素+1还在set中就计数+1,否则保存当前计数,并且计数归为1。记得把最后一次计数的值也算进去。知道使用哈希表就不难了。
2025-09-19 15:51:33
106
原创 【力扣hot100题】(101)字母异位词分组
这题就是使用哈希表记录,将排序后的string作为键,将排列后相同的元素作为值,每次遍历vector<string>,将当前元素使用sort排序(也考了sort的奇妙用法,string也可以用sort排序),只要包含的字母相同,那么sort后的字符串就也相同,利用这一点就可以很容易做出来,将排序后相同的字符串放进map的值中。写到这里想到,map的值原本只能放一个元素,但如果这个值类型是vector那么就可以存放多个元素。这题一眼会觉得很难,但只要想到哈希表的奇妙用法就很简单了。(很显然我没想到……
2025-09-19 12:00:20
144
原创 【力扣hot100题】(100)两数之和
0,是因为如果unordered_map中没放入该元素作为键,那么它的对应值就是0,但是这样的话会和第0位的元素搞混。👆两者主要区别同样在于有无顺序,只不过用途差别不小,我感觉unordered_set 比较常用,因为大部分题都是只需要知道元素是否存在。有一段时间没写力扣了,所以一开始想了很久map、unordered_map、set、unordered_set……unordered_map是无序集合,基于哈希表,每个元素唯一。set是一个简单元素集合,想知道元素是否存在时使用,每个元素唯一。
2025-09-19 10:18:26
248
原创 记录学习《手动学习深度学习》这本书的笔记(十一)
接下来学习第15章:自然语言处理:应用.最近正好也在做NLP相关的实验,正好学习一下。顺便一提我们做的实验是机器人对话方面的,需要用到文本对。
2025-05-11 16:29:29
1279
原创 记录学习《手动学习深度学习》这本书的笔记(十)
因为最近在做《语音与语言理解综合处理》的实验,所以打算先看第14章:自然语言处理:预训练和第15章:自然语言处理:应用,之后再来看第13章:计算机视觉。
2025-05-07 18:32:42
721
原创 记录学习《手动学习深度学习》这本书的笔记(九)
马不停蹄地来到了第十二章:计算性能……感觉应该是讲并行计算方面的,比如GPU、CPU、CUDA那些。
2025-04-27 19:46:04
1240
原创 记录学习《手动学习深度学习》这本书的笔记(八)
寒假和开学这段时间过的兵荒马乱,辗转多回终于又回到了这本书的记录。接下来学习的是按理来说机器学习的入门——优化算法。在深度学习中,我们通常会定义“损失函数”,我们使用优化算法使损失函数达到最小从而得到好的模型。在之前的代码中不少看到“SGD”、“Adam”几个词,它们的真正面目也在本章中揭开。
2025-04-23 12:22:17
1230
原创 记录第一次面试的经历
总之感觉有收获但不多,有点失望的是没有达到期望的时长吧,也没有发挥得很好(不过面试前一天的努力还是有很大作用的),还有非常失望的是最后也没让手撕代码(刚刷完力扣hot本来还很期待这个的来着,不过也可能算法岗位对这个要求不高,之前问过几家公司算法工程师岗位也不需要算法笔试)。是自动驾驶方面的岗位,深度学习相关,起初我也没料想到我这份平平无奇的简历能够被hr看中,前一天晚上邮箱投了简历,第二天上午就约面,第三天,也就是今天就一面,感觉对方公司要不是缺人,要不就是眼花了。现在是四点五十二,对,我刚面试回来。
2025-04-16 17:16:19
388
原创 【力扣hot100题】(099)寻找重复数
看了答案也只看懂一个循环,大概是利用查找链表中循环的那个思路。每个节点设置一条i->nums[i]的边,数组中有重复数字就代表必定有环,并且那个重复数字必定在环里面。因为有一个数字nums[i]重复,那么这个数字就一定被两个节点指向,而这个i就是那个重复数字。总之真的挺奇妙的,居然可以用链表的方法解,明明是看似无关的两题……用之前在链表中寻找环入口的方法,双指针,之前证明过了。技巧题真的做不了一点……②怎么查找这个重复的i?
2025-04-13 17:33:15
338
原创 【力扣hot100题】(098)下一个排列
然后找后几个数中比标记数1大的最小数,因为是递增所以从前往后遍历234,发现比1大的最小数是2,交换1和2,变成52134,即为结果。就拿51432距离,从后往前第一个递增的是1,因为4->3->2是递减,1->4是递增。先列几个例子找规律,发现需要从后往前先遍历,找到从后往前第一个递增的那个序号。将后面的数全部倒序(原本是递减,倒序后变为递增),变成51234。接着记录这个位置,下面只需要考虑这个位置之后的数变化排序就好了。找到思路做起来还是很痛苦……这题做的真的挺痛苦的……
2025-04-13 15:26:47
319
原创 【力扣hot100题】(097)颜色分类
后来想想终于想到了为什么出错,因为单指针时0是从前往后遍历,2是从后往前遍历,这里改成双指针是都是从前往后遍历,会出现交换的两个元素都是2,交换完后直接跳过了这样的错误。有点难些因为遇到0的时候也要附带交换1的指针,所以遇到0的时候交换后要把交换出去的1换回来(如果0指针在1的后面也就是有1元素)。答案是使用指针法,设置指针指向前面0元素的末尾,遍历数组时发现有0元素就与指针交换,然后指针后移一位。于是答案又给出了双指针的进阶做法,只遍历一遍,然后每次查看是否为0和2,交换就行。然后我决定用0和1做指针。
2025-04-13 13:33:32
574
原创 【力扣hot100题】(096)多数元素
代码可能有点难看懂,思路是先定下一个元素,遍历数组时记录它出现的“频率”(若当前元素是该元素则加一,若不是则减一),当count为0时说明在定下这个数之后的这段数组中这个数不是这段的多数元素,因为这段数组中这个数的出现频率没有达到一半,于是就可以换下一个数定位……最简单的方法是排序后找中位数,因为多数元素占一半以上所以排序后的数组中位数一定是多数元素。我最先想到的方法是两个两个删除,每次删除两个不同元素,最终剩下的那些就一定是多数元素。感觉这题应该是中等题,方法很多但思考起来还是有难度的。
2025-04-13 11:49:12
200
原创 【力扣hot100题】(095)只出现一次的数组
记得之前计组还是什么课上老师也讲到了异或的妙用,比如不使用任何空间交换两个数。设两个数是x、y,要不用额外空间交换两个数,就可以用异或运算。一开始以为是考验哈希表,没想到要用常数的空间复杂度。于是学到了异或方面的东西,异或这种神奇的运算可以使。终于开始做到技巧题,然后直接在第一题首当其冲。看评论区说只要常数空间复杂度就要想到位运算。y=x^y(此时y=x^y^y也就是x)x=x^y(此时x=x^y^x也就是y)x=x^y(此时x=x^y)没有技巧,全是感情jpg。这题也是同样的思路。
2025-04-13 10:09:35
238
原创 【力扣hot100题】(094)编辑距离
distance[i][j]=distance[i-1][j-1]+1/distance[i-1][j]+1/distance[i][j-1](当第i个字符和第j个字符不同,取三者中最小的即可)这题就是很好的例子,维护一个int数组distance[i][j]表示截止至第一个字符串的前i个字符,第二个字符串的前j个字符,两者的距离。distance[i][j]=distance[i-1][j-1](当第i个字符和第j个字符相同)第一行/列是从第一/二个字符串和空串的距离,也就是截取的长度,可以先求出来。
2025-04-13 09:27:24
364
原创 【力扣hot100题】(093)最长公共子序列
状态转移方程就是当两字符相等是,取俩位置前一个的值加一,否则就直接等于俩位置前一个值。维护二维数组代表截至至两个字符串的某个位置,前面的最长公共子序列长度。还算是挺简单的一题。
2025-04-12 20:18:08
366
原创 【力扣hot100题】(092)最长回文串
② 用一个数组记录从这个字符前包括该点在内的回文串的最大长度,遍历每个点,然后每个点的值=上一个点的值+2(若根据上一点的值回到上一点的回文串之前的那个字符和这个点的字符相同),否则为1(每个字符自身就是回文串)。当前字符palindrome[i][j]是回文串的条件是:palindrome[i-1][j+1](意思是两边界缩小1位是否是回文串)并且s[j]==s[i](两边界自身相同)。我的方法是将palindrome[i][j]设为第i个字符到第j个字符是否是回文串(包括边界i和j)。
2025-04-12 17:21:44
508
原创 【力扣hot100题】(089)最长有效括号
思路还是只要遍历一遍数组,维护动态规划数组记录截止至目前位置选取该元素的情况下有效括号的最大值。光是知道这个还不够,看了答案才知道每次可以取两个元素。但其实只是思路很难想到,一旦会了方法就很好做。但问题就在方法太难想了……这题目真是越做越难了。
2025-04-11 23:23:17
768
原创 【力扣hot100题】(088)分割等和子集
总质量[当前物体][截止至上一个物体占用的空间+该物体占用空间]=总质量[上一物体][截止至上一物体占用的空间]+当前物体质量。是否能占满[当前物体][截止至上一物体占用的空间+该物体占用的空间]=是否占满[上一物体][截止至上一物体占用的空间]是否能占满[当前物体][截止至上一物体占用的空间]=是否占满[上一物体][截止至上一物体占用的空间]如果上一物体可以占满这个空间,那么加上当前物体就可以占满上一空间+这一物体空间的空间。其实应该是可以优化空间复杂度的,因为每个物体只需要用到上一物体的数组。
2025-04-11 09:50:31
336
原创 【力扣hot100题】(087)乘积最大子数组
方法如下:维护两个数,分别是目前为止最大数和最小数,最大数一般来说是正数,最小数一般来说是负数。而记录两个数组的原因就是风水轮流转,最大数肯定要记录,而谁都不知道后面会不会有负数让最小数一跃升天。(因为每次只需要用到上一个数的最大数和最小数所以不需要用两个数组记录,两个变量就ok了。所以这题需要设置两个变量,记录在必须取当前数的情况下,前面子数组乘积的最大数和最小数。如果当前数为负数,使得最大数变负数了,或者使最小数变正数了,两者就要“交换”。一开始绕了不少弯路,甚至想将每一个子数组的积全部求出来比较……
2025-04-10 16:14:17
335
原创 【力扣hot100题】(086)最长递增子序列
我的动态规划方法是每次找出达到k的递增串的最大长度,用数组记录,每次更新result。用了最普通的动态规划时间复杂度挺高的,答案看不明白,等下一轮再看另一种方法吧。
2025-04-10 13:16:49
284
原创 【力扣hot100题】(085)单词拆分
每次挨个比较wordDict里的单词,假设单词长度为len,前k个字符可被拼接的条件是前k-len个字符可被拼接并且前k个字符的后len个字符与该单词相同。同样是找到状态转移方程即可,这里维护的数组是记录前k个字符可不可以被拼接,也就是记录bool型。感觉动态规划题还是得多练,不然真的很容易自暴自弃……总之是个有点复杂的if。
2025-04-10 11:28:56
262
原创 【力扣hot100题】(084)零钱兑换
写的时候遇到一个小问题,就是题目给的零钱不一定是正序排序的,所以循环条件要变一下,改成遍历所有硬币。不过就是把我上一题想的“字典”改成了零钱。和上一题差不多,可以说几乎完全没有区别。
2025-04-10 10:24:09
262
原创 【力扣hot100题】(083)完全平方数
最开始的想法是构建词典记录一直到n的平方数,然后用数组记录从1到n的完全平方数的最小数,每次变量一遍词典,比如n为9就分别遍历比较第9-3*3个数的完全平方数的最小数,第9-2*2个数的完全平方数的最小数,第9-1*1个数的完全平方数的最小数……每次取最小的那个加一。想了一会,其实动态规划题只需要往状态转换方程想就好了。
2025-04-10 09:37:57
236
原创 【力扣hot100题】(082)打家劫舍
找出状态转移方程,前n家能偷到的最大金额=max(前n-1家能偷到的最大金额,前n-2家能偷到的最大金额+当前这家的金额)还是挺简单的,一开始想的太复杂了,以为要用二维矩阵记录,实际上从头到脚只需要一维就行了,甚至和上一题一样只要用两个变量。
2025-04-10 08:47:38
209
原创 【力扣hot100题】(080)爬楼梯
最基础的动态规划,原始方法是维护一个数组,每次记录到该阶梯的方案数量,每次的数量是到上一个阶梯的方案数量加上到上上一阶梯的方案数量,因为只有两种走法。进阶可以优化空间复杂度,只记录两个数字,因为更之前的数据都用不上了。让我们掌声恭迎动态规划的始祖——我当然是直接写优化方案——
2025-04-09 20:43:54
256
原创 【力扣hot100题】(079)划分字母区间
方法大概是先建立哈希表遍历数组记录每一个字母位置的跨度,然后再遍历数组,每次遇到跨度大于目前长度的字母,就将目前长度延申跨度的长度,然后继续遍历,知道位置已经到长度了,就将长度放入结果容器,将长度重置为1,起始位置重置为下一个字符,继续这些操作。其实不需要哈希表,用一个数组记录就可以了,而且也不需要记录起始位置和跨度(写完才发现并没有用上),记录每个字母的最后一个位置就可以了。感觉智商又回来了(松气)。
2025-04-09 20:22:11
298
原创 【力扣hot100题】(078)跳跃游戏Ⅱ
我参照答案的方法(不知道和答案是否完全一样)是,维护两个值,一个是当前可以到达的步数,一个是当前步数加一可以到达的步数。思路是能使用当前步数到达就用当前步数到达,不能的话再,将当前可到达的步数改成当前步数加一可以到达的步数,然后将当前步数加一。并且每次遍历都要查看能不能更新当前步数加一可达的位置。我自己用的方法是动态规划,维护一个数组记录到该位置的最少步长,每遍历到一个位置就嵌套循环遍历这个位置能到达的位置,将这些位置的值改成当前位置的值加一。依旧用了两种方法,一种是我一开始想到的,一种是看答案学会的。
2025-04-09 19:12:38
271
原创 【力扣hot100题】(077)跳跃游戏
我最开始的想法还是太单纯了,最开始想着用回溯法,然后想到上一题的经验又想到了动态规划,虽然知道贪心题不太可能会这么复杂但实在想不出别的办法……果然我的智商做贪心题的极限就只能达到找零问题那种水平……什么都不要思考,只要随心所欲遍历一遍数组,因为可达到的距离永远只会增加,每次只要判断这个点可不可达,然后将这个点的可达位置和总体可达点进行比较即可。最开始的方法,击败5.02%的程序猿,你也快来试试吧!看了答案才知道贪心真的太简单了。
2025-04-09 17:40:07
462
原创 【力扣hot100题】(076)买卖股票的最佳时机
思路就是记录最小价格,然后一路遍历边调整新的最小价格边比较目前价格和最小价格差价。之前做过,但花了不少时间思考,所以这次做的很快。终于来到了最考验智商的贪心算法。
2025-04-09 16:44:29
291
原创 【力扣hot100题】(075)数据流的中位数
每次加入元素时首先和大根堆最大的数进行比较,若元素更小则加入大根堆,否则加入小根堆,接着比较大根堆小根堆的大小,若大根堆比小根堆大超过一个元素(默认元素总数为奇数时大根堆多一个元素),则将大根堆最大元素加入小根堆并从大根堆移除那个元素;若小根堆比大根堆大时同理。找出中位数时若总数为偶数(大根堆小根堆大小相等),则取大根堆最大元素和小根堆最小元素相加除以二;若总数为奇数(大根堆多一个元素),则直接取大根堆最大的元素。方法是建立两个优先队列,一个大根堆一个小根堆,大根堆记录较小的数,小根堆记录较大的数。
2025-04-09 16:13:09
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅