自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 力扣题库刷题笔记119--杨辉三角II

1、题目如下:2、个人Python代码实现如下:

2023-07-25 16:06:35 175

原创 力扣题库刷题笔记118--杨辉三角

截图1的第5-9行和截图2的第5-6行均是生成一个元素均为1的杨辉三角。

2023-07-25 16:03:38 280

原创 力扣题库刷题笔记75--颜色分类

备注第10行代码在本地可以跑过,但是力扣跑不过,所以就用了第10-16行代码进行替换。第一种思路是取巧,通过计数0、1、2的个数,去替换nums。

2023-07-25 10:36:56 341 1

原创 力扣题库刷题笔记73--矩阵置零

c、再次遍历二维数组matrix,如果matrix[m][n]的下标m在数组p中或者下标n在在数组q中,将matrix[m][n]赋值为0。b、首先遍历二维数组matrix,找到值为0的元素matrix[i][j],将下标i加入数组p,将下标j加入数组q。a、声明2个空数组p、q,用于存放值为0的元素matrix[i][j]的下标。2、个人Python代码实现。3、个人Python代码思路。

2023-07-25 10:14:19 1098

原创 力扣题库刷题笔记42--接雨水(未通过)

分次求雨水量的方式是,通过找到数组nums[1]到nums[-2]中非0元素的最小值step,再将数组每一个元素减去step,这里面除了nums[0]和nums[-1],每一个其他元素减去的step之和就是每一次的雨水量。a、有效数组,通过从左到右遍历找到nums[i] > nums[i-1],通过从右往左遍历找到nums[j-1] < nums[j],此时nums[i: j+1]就是有效数组,因为该数组一定是nums[0] > nums[1],nums[-2] < nums[-1]

2023-07-11 11:50:00 305

原创 力扣题库刷题笔记36--有效的数独

个人理解,本题思路其实很简单,判断每一行、每一列、每一个3*3的子数独是否存在重复数字,如果存在则返回False,如果不存在则返回True。2、声明空数组temp2,在遍历每一个一维数组时,遍历每一列,将每一列的元素加入temp2。3、最后遍历每一个3*3的子数独,将其转换成1维数组temp3,便后遍历temp3。1、首先遍历每一个一维数组,将其赋值给temp1,然后遍历temp1。

2023-07-07 13:59:56 792

原创 力扣题库刷题笔记34--在排序数组中查找元素的第一个和最后一个位置

a、判断nums中是否存在target,如果存在则继续,如果不存在则返回[-1, -1]c、分别移动左指针、右指针直至指针所在的值等于target,退出循环。b、初始化左指针、右指针。本地调试代码请见附件。

2023-07-07 08:30:25 51

原创 力扣题库刷题笔记31--下一个排列

c、第二次循环,依旧从右往左进行遍历,找到第一个大于nums[i-1]的nums[j]。换句说法,nums[j]就是nums[i:]中最小的大于nums[i-1]的值。b、第一次循环,是从右到左进行遍历,找到第一个降序排列的的元素,也就是当出现nums[i-1] > nums[i]的时候,nums[i-1]就是我们要找的值。前几次提交错误,主要是在上面截图第19行代码,原先写的是Nums = nums[:i] + temp,然后本地一直能跑过,这里不做多赘述。d、交换nums[i-1]和nums[j]

2023-07-06 17:02:14 394

原创 力扣题库刷题笔记18--四数之和

if nums[a] + nums[b] + nums[count-1] + nums[count-2] < target:#原理和第11行代码一致,注释在第8行。if nums[a] + nums[b] + nums[b+1] + nums[b+2] > target:#原理和第9行代码一致,注释在第8行。if b > a+1 and nums[b-1] == nums[b]: #去重,原理和第7行一致。首先看到这题就会想到两种方式,一是四层循环暴力破解,二就是基于前面的三数之和外面加加一层嵌套。

2023-06-27 16:53:26 310

原创 力扣题库刷题笔记17--电话号码的字母组合

其次,个人的思路是,先读取字符串第一个字符(digits[0]),遍历digits[0] 在字典中对应的值并加入数组res,然后在遍历digits[1:]的数组时候跟第一次遍历是有区别的。2、digits[1]也就是3,3在电话号码里面对应“def”,这个时候是res里面的每个元素都需要和def的每个字符进行拼接(换句话说,就是a分别和d、e、f拼接、b分别和d、e、f拼接,c分别和d、e、f拼接),最后加入到res里面。3、digits[2]、digits[3]的实现方式也跟第二条保持一致。

2023-06-27 09:11:07 196 2

原创 力扣题库刷题笔记16--最接近的三数之和

res = [] #当temp为较小值时,更新res中的元素,当循环完成后,res中的三个数之和就与target最接近。temp = float('inf') #临时变量,用于保存子数组之和与target的差值,取差值最小值就是本题的最接近的和。#先判断三数之和与target差值的绝对值是否小于temp,如果小于temp,则更新temp和res。#先判断三数之和与target差值的绝对值等于temp,退出循环。

2023-06-26 17:58:18 291

原创 力扣题库刷题笔记14--最长公共前缀

举例strs = ["flow","flower","flowe"],temp = “flow”,第一次循环的时候,由于str[0][0]、str[0][1]、str[0][2]都是f,所以count=3,由于len(strs)=3,所以f是公共前缀。举例 strs = ["dog","racecar","car"],选择用dog来被比较,也就是依次去d、o、g与第二个字符串的r、a、c、第三个字符串的c、a、r进行比较,所以这里的外循环次数实际就是dog的长度--3。4、注意strs为空的情况。

2023-06-26 11:39:44 367

原创 力扣题库刷题笔记13--罗马数字转整数

以上的思路,主要是声明一个列表temp,然后遍历字符串s,找到字符串中所有字符在字典中所对应的值,将值加入列表temp。这里有一个点在于,如果是“IV”、“IX”这种字符串,生成的列表会分别是[1,5]、[1,10],这里分别对应4和9,也可以理解为-1+5,-1+10.所以当列表temp中的元素小于后面的元素时,应该是减去当前元素,再加上后面的元素,就可以达成一样的效果。以上的主要思路在于,不再是将类似IV转换成IIII,而是因为其升序,先减再加是一样的效果。

2023-06-25 15:58:32 334

原创 力扣题库刷题笔记12--整数转罗马数字

与题解的差异主要在字典的设计以及题解第22行取余赋值的代码实现(个人是使用转换成字符串,然后根据位数确定对应字符,相对来讲笨比了许多)

2023-06-25 11:49:35 122

原创 力扣题库刷题笔记8--字符串转换正数(atoi)

而且个人习惯极其不好,没有输入各种可能的输入进行调试,而是直接提交代码,这样的话,其实在考试的时候很难去发现是哪里出了问题。for i in temp: #遍历字符串s,如果字符为数字,则拼接到res_temp,反之,退出循环。res_temp = "" #临时变量,将字符串中的数字加入该变量,最后赋值给输出。#判断第一个字符是否为正负号,如果是,将第一个字符赋值给flag,并在s中删除第一个字符。

2023-06-25 09:38:22 307

原创 力扣题库刷题笔记9--回文数

1、题目如下:2、个人Python代码实现:代码如下:

2023-06-16 00:25:32 109

原创 力扣题库刷题笔记6--N字型变换

换种说法就是,外部循环次数为numRows,内部循环通过字符下标去判断循环次数,这里经过过观察,每一次内部循环次数其实是math.ceil(len(s) / 2* (nowRows - 1)),如果这里次数不理解,可以参照上表字符A到字符E是第一次循环,字符B到字符G代表第二次循环(如果有小伙伴表示这个循环的方式和表中的背景颜色不同,也可以理解成T-Y是第一次,V-Z是第二次)由于个人确实不擅长生成二维数组类似的操作,所以换个思路,采用循环的方式,也就是最初思路中生成的字符串个数,转换成循环次数即可。

2023-06-16 00:22:10 1019

原创 力扣题库刷题笔记7--正数反转

return out_put if abs(out_put) < pow(2, 31) else 0 #当out_put大于64位时,输出0,否则输出out_put。out_put = int(str(abs(x))[::-1]) * (-1) #当x为负数,将x取绝对值,然后逆序,再加上符号。if x == abs(x): #当x为正数,将x逆序取整。

2023-06-15 00:40:03 76

原创 力扣题库刷题笔记5--最长回文子串

第一次while循环,是从a开始,依次判断a、ab、abc、abcd是否为回文字符串,在内循环中temp的值也依次为a、ab、abc、abcd,下同;#外循环while用于判断字符串s中是否含有字符,当每一次内循环结束以后,删除字符串s的第1个字符,开始下一次内循环。#内循环for用于记录从当前下标(此处下标可以理解为初始值为0,每一次外循环后下标+1)开始后的可能存在的回文子串。#第二次while循环,是从b开始,依次判断b、bc、bcd是否为回文字符串,以此类推,执行四次循环。

2023-06-15 00:20:48 1102

原创 力扣题库刷题笔记4--寻找两个正序数组的中位数

flag = len(nums) % 2 #判断数组num长度。if flag: #如果数组长度为奇数。i = len(nums) // 2 #获得中位数下标。nums.sort() #数组升序排序。nums = nums1 + nums2 #合并数组。

2023-06-14 00:23:36 961

原创 力扣题库刷题笔记3--无重复字符的最长子串

if len(temp) > len(out_put): #如果temp字符串长度大于out_put,则将temp赋值给out_put。if i in temp: #如果字符i在temp中,则将temp进行切片到不包含i。temp += i #将当前遍历的字符i加入字符串temp中。out_put = "" #输出,值为当前最长连续不重复子串。

2023-06-14 00:08:32 924

原创 力扣题库刷题笔记735-行星碰撞

个人代码思路,主要是新建一个列表stack,将原列表asteroids中的元素依次加入到stack中。elif flag1 == 0: #当stack最后一个元素为负数时,asteroids中的元素直接加入stack中,并唉asteroids中删除他。if stack[-1] + asteroids[i] > 0: #如果stack最后一个元素和asteroids第一个元素相加为正数,在asteroids中删除第一个元素。

2023-05-09 18:00:40 570

原创 力扣题库刷题笔记704-二分查找

1、题目如下:2、个人Python代码如下:个人代码如下:left = 0return midreturn -1。

2023-05-05 22:33:50 674

原创 力扣题库刷题笔记682-棒球比赛

elif operations[i] == 'D': #如果元素为D,将当前元素赋值为前一个元素的2倍,并从当前元素的下一个元素继续遍历。elif operations[i] == '+': #如果元素为+,将当前元素赋值为前两个元素之和,并从当前元素的下一个元素继续遍历。else: #如果元素为数字,转换成整型。

2023-05-05 22:12:58 753

原创 力扣题库刷题笔记647-回文子串

d、然后确定终止下标,终止下标用第2个for循环,用i+j作为终止下标进行切片。最后,由于i+j的最大值一定是字符串长度+1(原因见b,这样才能使得在每一次外循环的最后一次循环,切片为s[i:len(s)+1],也就是等价于s[i:])。b、首先需要知道的是字符串s,s[i,j],指的是从下标i开始,到下标s[j-1]为止。if s[i:i+j] == s[i:i+j][::-1]: #当切片字符串与其逆序的字符串相同时,就是回文字符串,此时ans+1。3、知识点:字符串逆序。

2023-05-05 20:23:56 705

原创 力扣题库刷题笔记646-最长数对链

本题算是到目前为止,代码能读懂,但是思路并不能完全理解的代码(大概能理解,但是无法完全描述,不看题解不能做出),涉及到贪心和排序。先记录,后续希望能理解一二。

2023-05-04 22:02:39 65

原创 力扣题库刷题笔记581-最短无序连续子数组

a、输入仅存在两种场景,数组本身是升序排列的和数组存在乱序的,存在乱序的意思就是存在驼峰元素nums[n] < nums[n-1],此时整个数组就不是纯粹升序的。以上代码,如果感觉在if条件里面少判断了数组是否升序的话,是由于在声明ans的时候默认数组时升序,所以初始化为0。浅看题解,解题思路和本人接替思路一毛一样,奈何没有想到用双指针,在代码实现上也存在问题。#当左指针相等时,左指针右移一位。#当右指针相等时,右指针左移一位。#当左指针相等时,左指针右移一位。#当右指针相等时,右指针左移一位。

2023-05-04 08:41:36 223

原创 力扣题库刷题笔记556-下一个更大元素Ⅲ

例如9845835421,从右往左找到第一个升序的部分就是[3,5],然后寻找[5,4,2,1]比3大的值并交换元素,35421就变成了45321,然后将5321按照升序排列即可。c、再次从右往左查找第一个大于nums[i]的元素nums[j],将test[i]和nums[j]交换位置后,将nums[i:]升序排列之后即为大于之前元素的最小值。备注:nums[i]和nums[j]交换以后,实际上nums[i+1:]之后的元素均是降序排序排列的,所以转置nums[i+1:]即可。

2023-04-28 11:49:34 91

原创 力扣题库刷题笔记496-下一个更大元素

如果切片后得nums2存在元素大于当前元素,则赋值给num,且退出本次循环。#如果nums2中不包含或者最后一位元素为当前遍历得元素,返回-1。#如果切片后的数组不存在元素大于当前元素,则num=-1。#当前元素切片后得数组进行遍历。#初始化num = -1。#空列表用于输出结果。2、个人Python代码实现。

2023-04-24 17:07:02 786

原创 力扣题库刷题笔记406-根据身高重建队列

通过遍历,求得people[0][0]到people[i-1][0]大于people[i][0]的元素个数,并负责给total。while time < len(people): #外部循环,每次从people[0]开始遍历所有元素。#如果没有交换元素,则循环次数+1,当循环次数等于len(people)时,代表所有元素已被遍历,退出循环。#如果本次进入循环,则需要退出内部循环,继续从people[0]开始循环。#元素左移以后,total应该-1。

2023-04-23 17:15:50 399

原创 力扣题库刷题笔记394-字符串解码

理解以上代码花了一段时间,按照理解基本上也能再次写出来,但是感觉过小段时间可能再写出来就有些困难了,但是还是保存自己对于这段代码的理解。c、存在多个[],且[]中间存在其他中括号时,就是最先的截图了。2、个人Python代码实现。3、题解Python代码思路。

2023-04-21 17:22:11 88

原创 力扣题库刷题笔记209-长度最小的子数组

未实现原因和之前很多题目一样,主要在于用例数据过大时超出时间限制。粗看了一下题解,也存在暴力破解的方法,区别在于题解不是用的切片的方式,而是遍历直接求和。因为已经不只出现一次了,这里着重强调一下,使用暴力破解的示例代码虽然翻车了,但是用指针仍然能解决,前文说的能不用切片就不用切片,但是下意识还是使用了,因为利于我自己理解,然后又又又翻车了。发现仍然会超时,然后将示例代码Ctrl+C、Ctrl+V后,示例代码(上图是自己写的,非示例代码)仍然超时,估计是用例有变化。2、Python代码个人实现(未实现)

2023-04-20 11:37:30 76

原创 力扣题库刷题笔记179-最大数

本体的思路主要是通过拼接字符串之后比较大小,按照个人知识储备是按照转换成字符串拼接再转换成数字比较大小。2、Python题解思路实现。

2023-04-19 16:36:29 93

原创 力扣题库刷题笔记153-寻找旋转排序数组中的最小值

是因为数组经过旋转后,有且只有两种方式,一是递增,例如[1,2,3,4,5],二是两段递增,例如[3,4,5,1,2],也就是说对于数组最后的元素,在他的左边一定有递增的数组。即使是[2,3,4,5,1],对于1来讲左边的[2,3,4,5]也是递增的数组。看到评论区清一色的二分法,于是想一想有没有其他的方式,这里还真有,但是跟min起始区别不大。首先是,题目中的排序方式细看和加油站的排序方式一模一样,所以使用相同的排序方式后,如果和升序排列后的数组一样,则返回第一个元素。看到这题的第一反应是用min办法。

2023-04-19 15:00:07 83

原创 力扣题库刷题笔记134-加油站

个人的代码逻辑其实没有问题,主要是数据量过大会超时。相较于题解的思路,差异其实在对于数组排序的地方。我的思路是循环找到起始加油站下标,然后将gas和cost重新排序;而题解的思路相同的地方在于找到下标,差异在于他没有进行数组重新排序,直接只从下标往后看,不管下标前的数据。b、如果第0个加油站的油小于到第一个加油站的油,那么从第1个加油站作为起始点。这里由于一定有解,所以只需要判断第一个加油站开始,到最后一个加油站油够用就行了,不需要再关心第0个加油站,以此类推。3、基于题解思路的个人Python代码实现。

2023-04-19 11:58:20 186 1

原创 力扣题库刷题笔记55-跳跃游戏

a、使用 enumerate生成一个索引序列,索引序列里面有当前元素的下标i,和当前元素可以跳跃的距离jump。以enumerate([a, b, c])为例,会输出[(0, a), (1, b), (2, c)]的索引序列,enumerate用法可以参考。d、使用i + jump > max_i判断:当前下标为i的元素加上跳跃距离jump是否大于最大跳跃距离max_i,2个条件都满足的话更新max_i。c、使用max_i >= i判断:前面的元素是否能跳跃到当前下标为i的元素位置。

2023-04-18 11:47:58 78

原创 力扣题库刷题笔记53-最大子数组和

例如[-1,-2,1,2],连续子数组[-1, -2]和为-3,加上后面的元素,和一定小于后面的元素,所以[-1, -2]不在最大子数组[1,2]中;同理,[2,-3,1,2],连续子数组[2, -3],由也不再[1,2]中间。所以当前连续子数组和小于0时,应该从后面的元素重新开始求和,也就是截图中间第9、10行代码。2、如果当前连续子数组和小于0,则意味着当前连续子数组一定不在最大值的连续子数组。1、使用temp记录当前连续子数组和,使用res记录连续子数组和的最大值。这个思路跟题库第64题最小路径和(

2023-04-18 11:12:53 55

原创 力扣题库刷题笔记28-找出字符串中第一个匹配项的下标

1、题目如下:2、个人Python代码实现:

2023-04-17 16:29:45 69

原创 力扣题库刷题笔记122-搜索旋转排序数组Ⅱ

个人是用了一个取巧的思路,即当元素升序时,一定是有收益的(换个说法,汇总每天的收益)。所以只需要依次比较列表中的元素,当元素升序时,将收益求和。

2023-04-17 16:20:19 67

原创 力扣题库刷题笔记121-买卖股票的最佳时机

3、个人Java代码实现。

2023-04-17 15:24:07 68

力扣题库刷题笔记42-接雨水(未通过)

力扣题库刷题笔记42-接雨水(未通过)

2023-07-11

力扣题库刷题笔记36-有效的数独

力扣题库刷题笔记36-有效的数独

2023-07-07

力扣题库刷题笔记34-在排序数组中查找元素的第一个和最后一个位置

力扣题库刷题笔记34-在排序数组中查找元素的第一个和最后一个位置

2023-07-07

力扣题库刷题笔记31-下一个排列

力扣题库刷题笔记31-下一个排列

2023-07-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除