- 博客(38)
- 收藏
- 关注
原创 代码随想录算法训练营第38天 | 理论基础 、509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯
1. 确定dp数组(dp table)以及下标的含义。5. 举例推导dp数组(打印)746. 使用最小花费爬楼梯。3. dp数组如何初始化。509. 斐波那契数。
2024-05-13 14:42:15
205
原创 代码随想录算法训练营第36天 | 738.单调递增的数字、968.监控二叉树
一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]设为9,从后向前遍历。从下往上看,局部最优:让叶子节点的父节点安摄像头,所用摄像头最少,整体最优:全部摄像头数量所用最少。
2024-05-13 14:37:29
212
原创 代码随想录算法训练营第35天 | 435. 无重叠区间 、763.划分字母区间 、56. 合并区间
本质还是判断重叠区间问题,按照左边界从小到大排序之后,如果 intervals[i][0] <= intervals[i - 1][1],即intervals[i]的左边界 <= intervals[i - 1]的右边界,则一定有重叠。统计字符串中所有字符的起始和结束位置,记录这些区间,**将区间按左边界从小到大排序,找到边界将区间划分成组,互不重叠。模拟合并区间,合并区间后左边界和右边界,作为一个新的区间,加入到result数组里就可以了。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数。
2024-05-13 14:34:55
243
原创 代码随想录算法训练营第34天 | 860.柠檬水找零 、406.根据身高重建队列、 452. 用最少数量的箭引爆气球
先按照身高h来排序呢,从大到小排(身高相同的话则k小的站前面),然后按照k为下标重新插入队列,优先按身高高的人的k来插入,后序插入节点也不会影响前面已经插入的节点。模拟射爆的过程:如果把气球排序之后,从前到后遍历气球,被射过的气球仅仅跳过,记录一下箭的数量。局部最优:遇到20,优先消耗美元10,完成本次找零。10元,再找给一张5元,ten++, five--20元,先试着找一个10和一个5;如果找零,每次消耗最少的数目。5元,直接收下,five++类似分发糖果,两个维度考虑。选择重叠覆盖最多的坐标发射。
2024-05-13 14:30:56
253
原创 代码随想录算法训练营第33天 | 1005.K次取反后最大化的数组和 、134. 加油站、135. 分发糖果
选择一个单步收益最大的,看最远能走到那里。取反绝对值大的负数,和绝对值小的正数。先按绝对值排序,然后操作。
2024-05-13 14:27:23
172
原创 代码随想录算法训练营第32天 | 122.买卖股票的最佳时机II、 55. 跳跃游戏、 45.跳跃游戏II
以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步。每次交易都要最大正收益,把利润分解为每天为单位的维度。每次要达到尽可能远的范围,不是单独看一步跳的距离。
2024-05-13 14:23:31
165
原创 代码随想录算法训练营第31天 | 455.分发饼干 、376. 摆动序列 53. 最大子序和
当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算。保证有尽可能多的局部峰值,注意分清况讨论。小饼干优先满足小胃口。
2024-05-07 09:34:40
194
原创 代码随想录算法训练营第30天 | 332.重新安排行程、 51. N皇后、37. 解数独
思路还比较好想,排序也有想到,难点是如何使用合适的数据结构。
2024-05-05 15:57:45
159
1
原创 代码随想录算法训练营第29天 | 491.递增子序列、46.全排列、47.全排列 II
不用startIndex来控制回溯进程,用used数组来控制。根据数据范围,可以考虑使用哈希数组来替换以提高效率。去重利用set实现,因为递增子序列不能排序。
2024-05-05 15:51:50
211
1
原创 代码随想录算法训练营第28天 | 93.复原IP地址 、78.子集、90.子集II
回溯条件判断用点的数量来判断,注意回溯进程中'.' 也要占一位。子集问题是收集树形结构中树的所有节点的结果。去重思路类似树层去重,使用used数组。需要遍历整个树,所以不需要剪枝优化。
2024-04-30 19:31:27
111
原创 代码随想录算法训练营第26天 | 39. 组合总和、40.组合总和II、131.分割回文串
题目链接/文章讲解:视频讲解:题目链接/文章讲解:视频讲解:视频讲解:
2024-04-29 19:29:13
131
原创 代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合
处理过程 和 回溯过程是一一对应的,处理有加,回溯就要有减。能理解思路,但是结合字母表的定义不熟。针对目标和进行剪枝操作。
2024-04-29 19:26:50
80
原创 代码随想录算法训练营第24天 | 回溯算法理论基础、77. 组合
剪枝操作:如果for循环选择的起始位置之后的元素个数 已经不足 我们需要的元素个数了,那么就没有必要搜索了。画出树形结构,注意回溯的后的撤销操作。
2024-04-29 19:22:59
255
原创 代码随想录算法训练营第23天 | 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
不断找到划分点进行分区间递归。遍历顺序:右、中、左。
2024-04-29 19:10:51
216
原创 代码随想录算法训练营第22天|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
如果当前节点小于目标值,在当前的右子树中找;不用管结构,有空叶子节点就插入,根据比较数值大小吗,决定方向。如果恰好一个大于一个小于,则找到,且一定最近的。主要是处理左子树和右子树都不为空的情况。
2024-04-25 17:54:36
267
原创 代码随想录算法训练营第21天 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
双指针一次遍历,针对元素比较,用一个集合来维护结果。双指针一次遍历,用一个变量来维护结果。后序遍历,左右中,在中进行比较。
2024-04-23 14:53:29
228
原创 代码随想录算法训练营第20天 |654.最大二叉树 、617.合并二叉树 、700.二叉搜索树中的搜索、98.验证二叉搜索树
首先一次建立确定最大值为根节点,然后划分左右两个子树的区间,递归调用。中序遍历之后的数组进行二分查找,或者直接在遍历时操作。中序遍历之后的数组验证是否为有序序列,或者双指针操作。
2024-04-23 14:27:58
304
原创 代码随想录算法训练营第18天 | 513.找树左下角的值、112. 路径总和 、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
一开始陷入了找最左下的误区,然后想到了通过深度来保证,但是还是觉得层次遍历最简单。学到了如何设计递归的返回值。
2024-04-21 20:31:20
155
原创 代码随想录算法训练营第17天 | 110.平衡二叉树 、257. 二叉树的所有路径 、404.左叶子之和
想到了分别递归左右子树求高度然后做差比较,但是没想到预先剪枝的条件。回溯,没想到样例输出原来是这样写。
2024-04-21 20:12:13
150
1
原创 代码随想录算法训练营第16天 | 04.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
一直在想用完全二叉树特性来做没搞出来,一看题解才想到确实按照普通二叉树遍历来做也没问题。n叉树的情况是更新下一步传的指针不同。利用完全二叉树特性的。
2024-04-21 19:58:04
149
1
原创 代码随想录算法训练营第15天 | 层序遍历、226.翻转二叉树、101.对称二叉树
相当于广度优先遍历之于图,使用队列来辅助实现。递归,后序遍历,通过条件进行预剪枝。递归,前序遍历,交换左右子结点。
2024-04-21 19:33:10
191
1
原创 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、 347.前 K 个高频元素
使用双端队列维护一个单调队列,保证队列中的值是单调递减,然后从前部弹出最大值。统计元素及其出现次数,然后按照频数维护一个小根堆,保留K个元素。
2024-04-16 09:50:37
210
原创 代码随想录算法训练营第十天 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
用栈来做匹配,遇到左括号将与之匹配的右括号压入栈中,遇到右括号则与当前栈顶进行比较,相同则弹出;栈,数字直接压栈,遇到运算符号,连续两次弹出操作数,然后再将结果压回以进行下一步计算。也学习了一下双指针的写法。
2024-04-14 16:11:49
162
1
原创 代码随想录算法训练营第九天 | 232.用栈实现队列、225.用队列实现栈
题目链接/文章讲解/视频讲解:只用。一个做输入栈,一个做输出栈。225.用队列实现栈。
2024-04-14 15:03:13
210
1
原创 代码随想录算法训练营第八天 | 28. 实现 strStr()、459.重复的子字符串
【代码】代码随想录算法训练营第八天 | 28. 实现 strStr()、459.重复的子字符串。
2024-04-14 14:53:01
167
1
原创 代码随想录算法训练营第七天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串
思路没问题,但是检测数字是不是也算一个考察点,然后用isdigit()的调用来解决了。和单词翻转思路差不多,将整个翻转一次,根据n将字符串分成两段,再各自翻转一次。两次翻转的思路,但是注意分词、去除空格的库函数使用。541. 反转字符串II。151.翻转字符串里的单词。卡码网:55.右旋转字符串。卡码网:54.替换数字。
2024-04-14 14:11:03
100
1
原创 代码随想录算法训练营第六天 | 454.四数相加II、383. 赎金信、15. 三数之和、 18. 四数之和
关键的是去重操作,需要注意的是每个答案内部元素是可以重复的,如[-1,-1,2],但是不能有两个重复的答案[-1,1,2], 所以重复的判定应该是num[i] == nums[i-1]先前两个数组进行遍历,将两个元素和的值和出现的次数作为key和value存储到哈希表中,然后针对第三个和第四个数组,检测是否目前的哈希表中有满足条件的值,有则将对应次数累计相加。双指针写法,排序后,指针分别位于头尾,依据求和与target比较情况,决定指针移动。哈希表,不易进行去重操作,所以采用双指针写法。
2024-04-14 13:43:25
172
1
原创 代码随想录算法训练营第五天 | 242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
需要熟悉Python其他工具类的写法:defaultdict和Counter。242.有效的字母异位词。349.两个数组的交集。
2024-04-09 14:56:36
104
原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
第一时间想到了哈希表,在不使用额外空间的情况下,学习了掐头统一遍历的思路。第一次写的时候,奇数和偶数长度判断写得太丑陋了,但是图画出来就很清楚了。快慢指针的思路很巧妙,但是从数学上计算入口不如再用一个指针来的方便。想到了用快慢双指针,然后在条件卡了一下,不应fast.next。学习一下递归的思想和做法。
2024-04-07 16:12:49
238
原创 代码随想录算法训练营第三天 | 203.移除链表元素、707. 设计链表、206.反转链表
注意要返回的dummy.next,不是p.next;熟悉python语言的链表表示和判断非空的方式。第一次有点路径依赖了,还是想写伪头节点,后来发现并不合适。然后递归的做法还没有太理解...主要学习一下用伪节点的写法。注意对index输入的判别。
2024-04-06 15:07:19
219
1
原创 代码随想录算法训练营第二天| 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
想到双指针也能做,头尾相向双指针,比较绝对值,然后比较,更新位置。两个特例,如果全正,则相对排序不变,直接更新值;快慢指针,慢指针固定一个下标较小的,然后快指针向后扫描,直到这一段之间的和满足要求,然后更新这段区间长度;初始化LEN-MAX时候要注意范围,并考虑所有加和都小于target的情况,然后返回0。直接用平方数比较好像更简洁一些,省去调用abs()的时间开销。注意到了左指针移动后,sum要相应减去之前对应位置的值。自己看到题目的第一想法。自己看到题目的第一想法。自己看到题目的第一想法。
2024-04-05 10:30:27
324
1
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
【代码】代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
2024-04-04 18:08:20
199
1
原创 智谱AI ChatGLM3 广告数据集 Lora微调实践
例如,basic_demo 中没有读取微调模型后的 adapter 的内容,你需要参考 inference.py 的代码并进行修改,让其他 demo 能读入你的微调代码,将其部署到 basic_demo 下的 gradio_demo 中,并能够通过 webui 来进行调用。然后访问finetune_demo文件夹,按照README的要求,下载广告数据集AdvertiseGen,并进行格式转换,更适合对话形式的微调。主要修改模型加载方式的代码,将微调训练后的模型地址替换原来的模型地址。
2024-04-04 17:53:15
494
2
原创 智谱AI-CharacterGLM实操
通过代码包中api文件,调用get_characterglm_response实现多轮对话,并在output_stream_response中实现保存对话至文件的功能,这里我们指定为json文件格式。1.基于一段文本(自己找一段文本,复制到提示词就可以了,比如你可以从小说中选取一部分文本,注意文本要用markdown格式)生成角色人设,可借助ChatGLM实现。4.(可选)设计图形界面,通过点击图形界面上的按钮执行对话数据生成,并展示对话数据。然后我们利用简单的示例进行测试,可以看出生成了不同风格的图片。
2024-03-23 15:34:49
284
原创 Coggle 30 Days of ML(24年3月)基金金融问答-学习打卡
通过自然语言交互,理解人类意图和目标,从语义信息中提出出知识,语言知识、常识知识、专业领域知识,然后通过特定的记忆机制,保存历史记录的长度和提取相关记忆的难度,需要总结和利用数据结构压缩存储。当检索和提取记忆时,可以根据不同的指标如重要性、相关性和最近性来进行设计。对于记忆的使用包括推理和规划,迁移泛化等方式 (in-context learning, continual leanring, multi-task learning)【2】multi-agent:合作(无序、有序),对抗(辩论)
2024-03-17 23:54:59
354
原创 OpenAI-Translator大模型应用二次开发
最近在极客时间学习《AI 大模型应用开发实战营》,自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator,在这里简单记录下开发过程和心得体会,供有兴趣的同学参考: 其中PDF文件的解析是通过开源代码库pdfplumber实现的,可以读取出输入的pdf文件的元数据,以及页面对象,然后在针对页面对象,调用相应方法,可以解析出的文本数据和表格数据。而英文翻译成中文的过程主要通过调用大模型来实现,其中prompt的设计是重中之重,决定了翻译的效果。 Claude-API虽然官方没
2023-08-13 18:49:25
1224
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人