- 博客(45)
- 收藏
- 关注
原创 opencode下载与使用教程
下载参考:(23 封私信 / 80 条消息) OpenCode 超级详细入门指南,打造你的高效 AI 编程助手 - 知乎(23 封私信 / 80 条消息) Opencode+Copilot开发配置 - 知乎使用教程:💪 日常使用 | AI编程助手实战指南 | OpenCode教程
2026-04-04 09:17:55
156
原创 力扣138.链表的复制、23.合并K个升序链表
老实说一开始根本没有看懂题目是什么意思,是看了题解之后才理解的题意...题目的要求是要把给出的链表复制一遍返回头节点,一个节点包含三个部分:val、next、random。就意味着需要把这三个部分都复制。首先先创建一个字典,键为节点,对应的值就是节点的值。这里注意,是需要new一个节点出来,不然还是原链表。其次,再进行一次遍历,把next和random也加上即可。
2026-03-08 10:46:38
65
原创 力扣75.颜色分类、31.下一个排列、287.寻找重复数
使用双指针法,p0指向从前往后第一个非0元素,p1指向从前往后第一个2元素,则交换完成后下标[0, p0)范围内为0,[p0, p1)范围内为1,剩余为2。采用原地交换并移动指针的的操作,需要注意的是,在nums[i] == 0的情况下,交换p0指针指向的值,如果p0小于p1的话,意味着会把元素1换出去,所以还要再交换一次。由于整体是交换了两次,所以两个指针都要向后移动。
2026-03-07 13:37:33
389
原创 力扣136.只出现一次的数字、169.多数元素
采用异或操作,两个相同数字异或为 0 ,若将 nums 中所有数字执行异或运算,留下的结果则为 出现一次的数字 x。注意:初始化为0,因为任何数与 0 异或,结果不变。
2026-03-06 15:28:49
73
原创 力扣5. 最长回文子串、1143.最长公共子序列、72.编辑距离
使用中心拓展法,定点在中心,边界向左右拓展,从中间开始判断,若中间为回文串,左右边界为回文串,那么组合在一起仍然是回文串,注意不要越界,并分奇偶进行判断:一般地,枚举 i=0,1,2,…同理,枚举 i 和 i+1 作为偶回文串的中心,也就是初始化 l=i,r=i+1,其余做法同上。
2026-03-05 11:34:50
417
原创 力扣32.最长有效括号、62.不同路径、64.最小路径和
分成两种情况:1. 左括号多了,其右边的括号还可能多个成对构成有效括号,如((())();2. 右括号多了,左右两边会以它为间隔构成两部分有效括号,这个右括号可以作为一个标记点,如())(())利用栈先进后出的性质,当遇到左括号时,其下标进栈;当遇到右括号且栈非空时,元素出栈,记录下标距离;当遇到右括号但栈为空时,意味着没有对应左括号了,无法弹出,则该括号作为后续最长有效括号的起始点。
2026-03-04 10:49:01
66
原创 力扣152.乘积最大子数组、416.分割等和子集
同时维护最大和最小值,因为负数 × 负数 = 正数,当前最小值(负数)乘以一个负数后,可能变成很大的正数,从而成为新的最大值。
2026-03-03 11:55:54
67
原创 力扣322.零钱兑换、139.单词拆分、300.最长递增子序列
本题实际为一个完全背包问题(即物品可以无限次取)。由于是找最小硬币个数,故初始化为最大的值。递推公式类似的,注意内循环初始是从coins[i]开始,直接跳过那些凑不够硬币面值的数。
2026-03-02 13:38:06
328
原创 力扣763.划分字母区间、198.打家劫舍、279.完全平方数
由于同一字母最多出现在一个片段,所以需要先记录当前字母出现的最后一个位置。然后再次遍历,当下标与记录的字母最后位置相等时,说明该范围符合要求,将长度记录在结果数组后返回。
2026-03-02 10:45:19
402
原创 力扣70.爬楼梯、118.杨辉三角
1. 确定dp数组以及下标的含义dp[i]: 爬到第i - 1层楼梯,有dp[i]种方法2. 确定递推公式可以有两个方向推出来:首先是dp[i - 1],上i-2层楼梯,有dp[i - 1]种方法,再一步跳一个台阶就是dp[i]。其次就是dp[i - 2],上i-3层楼梯,有dp[i - 2]种方法,再一步跳两个台阶就是dp[i]。所以dp[i] = dp[i - 1] + dp[i - 2]。3. dp数组如何初始化dp[0] = 1,dp[1] = 2,就是初始的情况。
2026-02-28 22:39:39
76
原创 力扣347.前K个高频元素、215.数组中的第k个最大元素、295.数据流的中位数
因为这一题需要的是前k个最大的元素,所以最终堆里要保留的是k个最大元素,弹出小的,故使用小顶堆。2. 注意这两个的性质,小顶堆是自顶向下元素变大,大顶堆是自顶向下元素变小,如果取中位数的话,总元素数为偶数就取两个顶堆的第一个元素相加除以2即可,为奇数就取A中第一个元素。添加数字 O(logN) : 堆的插入和弹出操作使用 O(logN) 时间。3. 设元素总数为 N=m+n ,其中 m 和 n 分别为 A 和 B 中的元素个数。1. 分别用小顶堆和大顶堆来存储元素较大的一半和元素较小的一半。
2026-02-26 16:54:03
549
原创 力扣20.有效的括号、155.最小栈
重在列举出每一种情况:1. 遇到左括号就将右括号进栈;2. 遇到右括号先判断栈是否为空,为空就说明没有对应的左括号,然后判断栈顶元素是否与当前左括号相等,若不等,则说明无法与对应位置的左括号配对;3. 判断玩前两种情况后,剩下的就是合理的右括号,出栈对应元素。最后还需要判断栈是否为空,必须要为空左右括号的数量才能对应,返回True,否则返回False。
2026-02-23 00:34:25
127
原创 力扣33.搜索旋转排序数组、153.寻找排序数组中的最小值
关键在于判断target、nums[-1]和nums[mid]之间的位置关系:1. target、nums[mid]在同一段,按照之前同样的方法进行左右端点的移动;2. target在第一段nums[mid]在第二段,即target > nums[-1] >= nums[mid](可自行举例验证),需要移动right;3. target在第二段nums[mid]在第一段,即nums[mid] > nums[-1] >= target,需要移动left。
2026-02-21 21:55:55
117
原创 力扣131.分割回文串、35.搜索插入位置、74.搜索二维矩阵、34.在排序数组中查找...
分为两个函数,一个判断是否为回文串,一个进行回溯。回溯从左往右进行,已遍历的不再重复遍历,因而递归时下标要右移。
2026-02-20 14:44:40
151
原创 力扣39.组合总和、22.括号生成、79.单词搜索
和之前的题目类似,这里题目说明可以重复选取元素,所以用一个变量记录当前下标,递归从当前下标开始。
2026-02-19 21:48:19
120
原创 力扣46.全排列、78.子集、17.电话号码的字母组合
如果直接将 path 添加到 result 中,那么 result 中存储的将是 path 的引用,而不是它的值。(也可以放到递归函数参数里)。递归函数参数需要startIndex,因为是无序,取过的元素不会重复取,写回溯算法的时候,for就要从startIndex开始,而不是从0开始。回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度。回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。
2026-02-15 13:25:33
639
原创 力扣207.课程表、208.实现Trie(前缀树)
主要是要求构成有向无环图,详细的思路如参考链接的方法二所示,我把我理解了的代码都标注在了注释里,因为确实有点看不太懂,还要再消化一下。
2026-02-12 19:50:23
292
原创 力扣200.岛屿数量、994.腐烂的橘子
1、目标是找到矩阵中 “岛屿的数量” ,上下左右相连的 1 都被认为是连续岛屿。2、dfs方法: 设目前指针指向一个岛屿中的某一点 (i, j),寻找包括此点的岛屿边界。3、搜索岛屿的同时,执行 grid[i][j] = '0',即将岛屿所有节点删除,以免之后重复搜索相同岛屿。4、主循环:遍历整个矩阵,当遇到 grid[i][j] == '1' 时,从此点开始做深度优先搜索 dfs,岛屿数 count + 1 且在深度优先搜索中删除此岛屿。5、最终返回岛屿数 count 即可。
2026-02-07 16:52:16
304
原创 力扣105.从前序与中序遍历序列构造二叉树、236.二叉树的最近祖先、124.二叉树中最大的路径和
1、前序遍历:中左右的顺序;中序遍历:左中右的顺序。2、由二者性质可知,前序数组的第一个元素即为根节点,由这个根节点可以在中序数组中搜索该值得到其序号,中序数组中该序号的左边即为根节点的左子树,右边即为根节点的右子树,由此可以对中序遍历数组进行划分。3、对于前序遍历数组,假设中序遍历划分的左子树长度为n,则可以将前序数组划分为[1:1 + n]为左子树,[1 + n:]为右子树。4、二者都划分好了之后即可对左子树和右子树分别进行递归操作。
2026-02-06 15:56:21
64
原创 力扣230.二叉搜索树中第k小的元素、199.二叉树的右视图、114.二叉树展开为链表
1、二叉搜索树的性质是其中序遍历为递增序列。利用该性质即可将题意转化为中序遍历的第k个元素2、中序遍历按照左中右的顺序进行,中间的处理需要对计数进行减1的操作,并验证其是否为0,若为0,则记录下此刻的数值并返回。
2026-02-05 17:38:49
452
原创 力扣543.二叉树的直径、102.二叉树的层序遍历、108.将有序数组转换为二叉搜索树、98.验证二叉搜索树
把之前求解最大深度的思路套用到这一道题当中,只是增加一个结果变量,用于返回所要求的直径,这个直径理论上应当是整个树中左子树和右子树最大深度之和,但不只局限于是根节点,在深度极度偏斜的情况下可能是其他节点的左子树或者右子树深度之和。
2026-01-22 15:16:29
256
原创 二叉树理论、力扣94.二叉树的中序遍历、104.二叉树的最大深度、226.反转二叉树、101.对称二叉树
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。把特殊情况单列出来返回,包括:对应节点一个为空一个非空、都非空、值不相等的情况,此时可以直接返回,若两个值相等了,就可以继续递归。由于是中序遍历,首先迭代访问左子树,遍历到最左节点后取出栈顶元素加入结果数组,然后向栈顶元素的右子树进行遍历。如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。1、确定参数及返回值:参数为节点,返回值为高度。
2026-01-20 15:43:33
595
原创 力扣148.排序链表
利用之前做过的题目,获取链表中点(876题),将链表分为两段,参考合并有序链表(21题),将前半段和后半段进行排序后合并,但与之前不同的是,这里并不一定是有序的,就通过递归方式来处理,最后向上返回的一定是两个有序链表之间的合并。如果不使用 pre,就无法直接操作中间节点的前一个节点,也就无法完成链表的分割,只能返回中间节点是什么,而无法对前半段链表和后半段链表分开处理。当循环结束时,slow 指针指向链表的中间节点,而 pre 指针指向中间节点的前一个节点。后面再来填坑吧我累了...
2026-01-19 14:30:36
264
原创 力扣24.两两交换链表中的节点、25.K个一组反转链表
与之前的类似,创建一个虚拟节点,来统一处理方式,然后就是按照一般的链表思路进行操作,重要的是自己在草稿本上画好图,分清楚什么时候两个节点之间的连接断了,先变动什么节点后变动什么节点。
2026-01-18 20:25:24
231
原创 力扣21.合并两个有序链表、2.两数相加、19.删除链表的倒数第N个节点
新建两个链表,用于存储合并后的链表;在循环内比较数值的大小来进行赋值;比较结束需要把一链表最后未遍历完的接在新建的链表后面。
2026-01-17 15:16:52
433
原创 力扣234.回文链表、141.环形链表、142. 环形链表 II
由hot100里面的上一题,反转链表,非常笨蛋地直接就想到先把整个链表反过来然后对比...但是忽略了当我反转链表的时候头节点head就已经被修改为None了,无法再进行后面幻想的逐个节点比对。给的测试用例居然还全部通过了我真是被迷惑了(扶额苦笑。
2026-01-16 15:17:54
878
原创 力扣240.搜索二维矩阵II、160.相交链表、206.反转链表
看到自己写的代码就好笑。。像刚进大学学C语言时会写出来的...感觉白读几年书。。。但还是记录一下,可以忽略这个。
2026-01-15 14:16:04
1014
原创 力扣73.矩阵置零、54.螺旋矩阵、48.旋转图像
根据题目给的示例比较容易想到循环遍历一次记录下为0元素的行和列,再循环遍历两次分别把为0元素对应的行及列上的元素置为0。
2026-01-14 16:42:13
298
原创 力扣186.轮转数组、238.除了自身以外数组的乘积、41.缺失的第一个整数
1、移动的长度可能超过数组长度,故先进行取余操作。2、把k加入判断条件排除k=0的情况,直接就是原数组无需任何更改。3、nums[-k:] 表示取列表 nums 从倒数第 k 个元素开始到列表末尾的切片,即列表的最后 k 个元素;nums[:-k] 表示取列表 nums 从开头到倒数第 k 个元素之前(不包括倒数第 k 个元素)的切片,即列表的前 len(nums) - k 个元素。4、不能用nums[-k:] + nums[:-k],没有进行原地操作,而是产生了一个新数组。
2026-01-13 15:37:40
649
原创 力扣53.最大子数组和
尝试了但超时,不过应该也是个思路使用前缀和prefix,prefix[j] - prefix[i]即为子序列的和,比较大小就可判断最大。
2026-01-04 17:23:55
533
原创 数据分析之展示——matplotlib02
一、pyplot基础图标函数概述。三、pyplot直方图的绘制。五、pyplot散点图的绘制。四、pyplot极坐标的绘制。二、pyplot饼图的绘制。
2024-12-30 12:31:22
307
原创 数据分析之表示——numpy01
一般都是关于对应元素的运算,maximum生成时若数据类型不同,则变为更广泛的类型(?整数与浮点数对比时结果为浮点数)注:几乎所有一元函数都是新生成了运算结果的数组,原数组不变,如果希望原数组改变需要将其赋值给原数组。
2024-12-29 19:52:41
475
原创 git克隆自己的GitHub仓库时显示Please make sure you have the correct access rightsand the repository exists.
1、首先根据B站GeekHour视频11节进行配置,但是配置完仍然不能clone。在此之后再进行clone居然就成功了...我也不太明白什么原理...
2024-10-17 18:32:04
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅