- 博客(29)
- 收藏
- 关注
原创 LeetCode热题Hot100 - 搜索旋转排序数组
二分法变种,关键在于搜索区间的判断,要注意大于、等于、小于三种情况分别怎么处理,在合适的时候合并分支。二刷代码可能更优雅- -,则返回它的下标,否则返回。你必须设计一个时间复杂度为。按升序排列,数组中的值。在预先未知的某个下标。
2024-04-24 23:15:38
216
原创 LeetCode热题Hot100 - 最长有效括号
用栈保存最近的一个非有效括号子串的位置,当遇到'('时,把当前下标入栈。遇到')'时,出栈,出栈后栈为空,说明当前子串不是有效子串,把当前下标入栈;出栈后栈不为空,说明当前弹出的是与后括号相匹配的左括号的下标,更新最长子串的长度(注意是当前下标减去栈顶下标)。的字符串,找出最长有效(格式正确且连续)括号子串的长度。
2024-04-23 22:44:27
296
原创 LeetCode热题Hot100 - 下一个排列
从后向前找最靠后的一个相邻升序组,记为[i, j]。j后的数组一定是倒序的。在[j, end]中找到最小的那个大于nums[i]的值,下标记为idx,交换nums[idx]和nums[i],然后对[i+1, end]取倒序(即从小到大排序)。就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的。
2024-04-22 23:09:33
179
原创 LeetCode热题Hot100 - 两两交换链表中的节点
使用两个指针p1/p2,分别记录需要交换的两个节点。另外使用一个指针last,记录两个节点的上一个节点。last.next = p2,p1.next = p2.next(记录p2后面的值,如果直接p2.next = p1,则p2后面待交换的节点会丢失),last.next.next = p1,完成交换。last指针往后移两个,重新生成p1和p2。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2024-04-15 22:39:15
183
原创 LeetCode热题Hot100 - 合并K个升序链表
第二反应,n个列表取头部node,n个node排序,取最小的,然后用同链表中次小的代替它。这样一来,需要对n个值不停排序。有没有不用一直排序,每次都取最小值的方法呢?用最小堆每次弹出n个node中最小的。那么最后一个问题,怎么确定最小的node属于哪个链表(因为要用同链表次小值代替它)?第一反应,n个列表,两两合并,n-1次遍历即可,但是这样n-1次排序会浪费很多时间。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。逆天了- -困难模式一次过- -
2024-04-15 22:17:44
249
原创 LeetCode热题Hot100 - 括号生成
递归,考虑手动生成有效括号的逻辑。记录当前可能组合中左括号的个数left和剩余可用括号对数n,1.当left不为0时,加一个右括号,n不变,继续下一个 递归;2.当n不为0时,为当前可能组合加一个左括号,left+1, n-1,继续下一个递归;3.当n=0时,考虑left是否为0,不为0,则在当前可能组合右侧加上left个左括号。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。改变递归调用方式,可能更优雅- -
2024-04-13 22:58:52
217
原创 LeetCode热题Hot100 - 合并两个有序链表
用两个指针分别指向两个列表的待合并结点,用另一个链表保存已合并结点。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。
2024-04-12 22:10:51
246
原创 LeetCode热题Hot100 - 有效的括号
使用一个栈维护s中出现的(、[、{信息,每次遇到)、]、},判断栈是否为空,或栈顶的左括号是否和右括号匹配,不匹配直接返回False。s遍历结束后,栈为空返回True,否则返回False。,判断字符串是否有效。
2024-04-08 22:38:54
249
原创 LeetCode热题Hot100 - 删除链表的倒数第N个结点
用两个指针,第一个指针先往前走n步(注意起始点不是head),然后第二个指针和第一个指针一起移动,当第一个指针走到链表最后一个结点时,第二个指针的next结点即为要删除的结点,另p2.next = p2.next.next即可。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2024-04-08 22:28:52
228
原创 LeetCode热题Hot100 - 电话号码的字母组合
其次,使用递归,递归终止条件为没有号码(返回空列表)或只有一个号码(返回字典中对应的字母列表)。每次递归,做如下拼接:key可能对应的字母+digits[1:]所有可能的结果。首先,需要数字到字母表的映射,使用字典保存,key为数字,value为数字对应的字母列表。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。
2024-04-08 22:08:33
255
原创 LeetCode热题Hot100 - 三数之和
当nums[left]+nums[right]=-nums[i],输出nums[i], nums[left], nums[right],然后left++继续遍历,直至left=right。当nums[left]+nums[right]>-nums[i],right--遍历nums[i],寻找index>i的部分中,和为-nums[i]的两个数。当nums[left]+nums[right]<-nums[i],left++最重要的是如何剪枝,对算法加速。**==>提示超出时间限制**对nums数组排序。
2024-04-07 22:09:00
207
原创 LeetCode热题Hot100 - 盛水最多的容器
用一个字典保存height中每个元素的下标,然后对height从小到大排序,遍历height数组,对每个height[i],得到原下标pos,计算pos与最左(height[0])、最右(height[-1])之间的面积,取最大值。用两个指针,从左右两侧向中间遍历数组,每次向内移动height较小的那个指针(移动较小的指针,则面积可能变大,但移动较大的指针,面积必然变小)。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。然后去看了题解,秒啊~
2024-04-05 22:44:47
248
原创 LeetCode热题Hot100 - 正则表达式匹配
目前的思路:递归判断是否满足匹配条件。有几个用例超时,容我三思。,请你来实现一个支持。的,而不是部分字符串。
2024-04-02 22:18:23
281
原创 LeetCode热题Hot100 - 最长回文子串
二维数组,dp[i][j]表示s[i:j+1]是否是回文子串(dp中可以选择记录当前子串最大长度,也可以选择记录是否是回文子串,因为代码中的扫描方式,子串长度递增,所以用maxl和maxr记录最新的回文子串即可,返回最长回文子串,用maxl、maxr记录最长回文子串的起始和终点位置即可。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。1、dp数组初始化方式可以简化。2、不需要计算最大子串长度。
2024-04-01 23:21:58
228
原创 LeetCode热题Hot100 - 寻找两个正序数组的中位数
题目本身不是特别难,主要是对空字符串的处理。请你找出并返回这两个正序数组的。的正序(从小到大)数组。算法的时间复杂度应该为。
2024-03-30 23:07:00
280
原创 LeetCode热题Hot100-两数相加
在内存上有没有可以优化的地方呢?(p2指针似乎没必要,直接用l2就行)你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。
2024-03-24 22:18:00
230
原创 LeetCode热题Hot100-两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。充分意识到Coding能力的重要性,重启算法刷题之旅。一刷只写自己的解,二刷再看有没有其他更巧妙的方法~没想到这么简单的题目都写的磕磕绊绊。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2024-03-23 22:24:33
306
原创 2022.7.6【Python语法、补码】
模:负数的补码和原码之和,N位二进制数据的模是2^N。补码:正数的补码等于自己,负数的补码等于符号位不变,其他各位按位取反后加一。补码存在的意义:变减法为加法,a-b等于a加-b的补码。原码计算:负数的符号位为1,其他按照二进制方式存储abs(n)即可。计算机中,数据都是以补码的形式存储。0000 0000为+0, 1000 0000为-0,即-128。8bit有符号二进制数字表示范围是-128~127。1. bool类型是int类型的子类,可以和int类型的数据一起运算,此时True表示1, False表
2022-07-06 22:18:12
591
1
原创 2022.7.4【Python语法、Pytorch模型保存/加载】
Pytorch保存和加载模型(load和load_state_dict)_木盏的博客-CSDN博客_pytorch 加载模型Pytorch目前成为学术界最流行的DL框架,没有之一。很大程度上,简洁直观地操作有关。模型的保存和加载,于pytorch而言,也是很简单的。本文做了一个比较实验,方便大家理解。首先,要清楚几个函数:torch.save,torch.load,state_dict(),load_state_dict()。先举最简单的例子:import torchmodel = torch.load('
2022-07-04 21:45:11
350
原创 深度学习框架对比[1]: Theano/CNTK/Tensorflow
深度学习框架对比[1]: Theano/CNTK/Tensorflow说明1. 评价指标2. 实验条件2.1 硬件2.2 测试数据集2.3 测试算法2.4 测试框架和假设3. 结果说明深度学习框架有很多种,想看看不同框架训练出来的模型精度有没有区别。想弄清楚的问题主要有以下几个:不同框架的数值计算方法是否相同;如果计算方法不同,是否说明即使参数相同,不同框架训练出来的模型精度也不一样。...
2020-05-07 19:34:59
644
原创 【Debug】【Pytorch】“list object is not callable”
描述:用Pytorch写模型的时候,报错:list object is not callable原因:很多模型中间会有几层是完全相同的,就有人用[nn.Conv2D() for _ in range(num)]之类的一行简单语句实现几层的堆叠。这样定义的网络是一个列表,需要用nn.Sequential()包装一下才能在forward函数里实现数据传输。没用nn.Sequential()包装...
2020-04-23 11:11:37
938
1
原创 【Matlab】轮廓骨骼提取
介绍一个神函数:bwmorph。人生苦短,我还是选matlab吧。背景:需要把图像中提取出来的粗轮廓“压缩”成一个像素点的细线,即骨骼提取。本来的轮廓粗细不均匀,用图像腐蚀会导致一些点断掉。(注:轮廓内部需要填充)首先是形态学close操作%openclosese = strel('disk', 5, 4);fo = imclose(img, se);figure(1)i...
2019-10-15 09:17:50
6816
7
原创 cv2.findContours()函数
整理一下cv2.findContours()函数使用的相关注意事项。示例代码:image,contours,hierarchy= cv2.findContours(contour,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)输入:contour:带有轮廓信息的图像;cv2.RETR_TREE:提取轮廓后,输出轮廓信息的组织形式,除了cv2.RE...
2019-08-16 13:31:10
55849
11
原创 【Debug】Python:opencv若干问题
1、opencv和matplotlib的RGB颜色问题最近在同一个程序中用了matplotlib中的plt.imshow()函数,和opencv中的cv2.imwrite()函数,发现两个库对RGB颜色的翻译不同。比如(0,0,255)在plt中翻译为蓝色,在cv2中翻译为红色。应该是两个函数对红绿蓝三原色的解释顺序不一样吧。具体顺序差异没有去研究,但应该有迹可循。2、Image...
2019-08-14 09:43:46
244
原创 【Debug】OpenCV_Python:imshow() error “TypeError: Required argument 'mat' (pos 2) not found”
源码:cv2.imshow(gray_scale)报错:TypeError: Required argument 'mat' (pos 2) not found原因:cv2.imshow()函数需要两个输入,一个是图像窗口的名字即title,一个是所展示图片的像素值矩阵。上述代码应改为:cv2.imshow('gray_scale' ,gray_scale)gray...
2019-08-05 14:12:59
14020
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人