自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣刷题26

4、再次遍历i = 0(num[0] = 2),2 <= 7,path变成[2,2,2],递归调用backtrack(0,[2,2,2],1);6、回溯:path = [2,2],回到上一层i = 1(num[1] = 3),3 == 3,调用backtrack(1,[2,2,3],0)3、再次遍历i = 0(num[0] = 2),2 <= 7,path变成[2,2],递归调用backtrack(0,[2,2],3);5、再次遍历i = 0(num[0] = 2),2 > 1,触发剪枝,break。

2026-03-02 20:56:21 325

原创 力扣刷题25

遍历current[1:](即"1"):取第一个字符c = "1"和char = "2"不同,先把前一组(count = 1,char = 2)加入next_str,next_str.append("1"),next_str.append("2"),next_str = ["1","2"];遍历结束,处理最后一组字符(count = 1,char = 1):next_str.append("1"),next_str.append("1"),next_str = ["1","2","1","1"];

2026-02-27 21:38:09 823

原创 力扣刷题24

3、第二次循环:left = 0,right = 2,mid = 1,nums[1] = 3,3 > 2,right = 1;4、第三次循环:left = 0,right = 1,mid = 0,nums[0] = 1,1 < 2,left = 1;i // 3:行号整除3,确定宫所在的行数,0 = 第0~2行,1 = 第3~5行,2 = 第6~8行;j // 3:列号整除3,确定宫所在的列数,0 = 第0~2列,1 = 第3~5列,2 = 第6~8列。1、初始:left = 0,right = 4;

2026-02-24 20:26:50 361

原创 力扣刷题23

初始left = 0,right = 6,mid = 3,nums[mid] = 7 ,不等于target,nums[mid] > target, 0 < 7,且左半部分有序,但0不在此部分内,所以left = 4;此时,left = 4,right = 6,mid = 5,nums[mid] = 1,nums[mid] > target,0 < 1,且 右半部分有序,但0也不在此部分内,所以right = 4;根据题目提示,时间复杂度为O(logn),所以我想到的还是二分法。按升序排列,数组中的值。

2026-02-23 21:32:03 961

原创 力扣刷题22

要想写出这个题的代码,要先搞清楚什么是下一个排列,这就涉及到字典序了,有两种情况:(1)先比第一位,第一位大的,整体就大;nums[i] = nums[0] = 2,从后往前找,nums[2] = 1,不满足,nums[1] = 3,满足;这个i是我们要改动的关键位置,因为它后面的数是降序的,已经是最大的组合了,没法再变大,只能从i这里动手。当i = 1时,nums[1] = 3,nums[2] = 1,3 > 1,不满足;当i = 2时,nums[0] = 2,nums[1] = 3,2 < 3,满足;

2026-02-21 21:04:30 843

原创 力扣刷题21

接下来是滑动窗口的处理,遍历起始位置范围0到word_len - 1,对每个偏移量i,维护一个窗口[left,right],窗口内的单词长度均为word_len,用另一个字典current_freq统计当前窗口内的单词频率,当窗口内单词数量等于word_count时,检查current_freq与word_freq是否完全一致,如果一致,则记录起始索引。因为合法子串的起始位置,一定是0、1、...word_len - 1中的一个(比如单词长度为3,起始索引只能是0/1/2,否则切出来的不是完整单词)。

2026-02-20 11:58:00 630

原创 力扣刷题20

利用快速减法,用倍增的方式(位运算,左移一位相当于乘以2),每次尽可能多地减去除数的倍数,而不是一次次减,这样可以大幅度提高效率;3、第二次循环,temp = 3,i = 1;首先要明确异或(XOR,符号^)在布尔逻辑中的规则,两个布尔值相同时,结果为False(0),两个布尔值不同时,结果为True(1)。如果被除数和除数同正或同负(两个True或两个False),异或结果为False,sign = 1。如果被除数和除数为一正一负(一个True一个False),异或结果为True,sign = -1;

2026-02-17 13:16:47 280

原创 力扣刷题19

暴力匹配失败时,会把needle总体后移一位,重新从头比较,而前缀函数可以做到:失败后不从头开始,直接跳到pi[j-1]的位置继续比较(j是当前匹配失败的位置)。3、直接把needle后移,让needle[2]对齐haystack[4],继续比较,跳过了前两位"ab"的重复比较。1、匹配到haystack[4] = "a",needle[4] = "c"时失败,前四位"abab"都匹配;真前缀是指不包含子串本身的前缀,比如"abc"的真前缀是"a"、"ab";真后缀的定义也一样。

2026-02-14 15:34:56 767

原创 力扣刷题18

先遍历链表,检查剩余节点是否足够 k 个,接着对满足条件的 k 个节点进行翻转操作,再将翻转后的组与前一组和后一组进行正确连接,重复上述过程,直到所有满足条件的组都被翻转,这就是我的思路。prev_group_start = 3,此时链表:0 -> 2 -> 1 -> 4 -> 3 -> 5。prev_group_end = 1,此时链表:0 -> 2 -> 1 -> 3 -> 4 -> 5。5、返回dummy.next = 2,最终链表为:2 -> 1 -> 4 -> 3 -> 5。

2026-02-08 15:48:13 813

原创 力扣刷题17

(3)奇数个节点:1 -> 2 -> 3 ->None,最后一个节点3不交换,结果为2 -> 1 -> 3,符合要求。first = 1,second = 2,first.next = f(3),即1.next = 4;虚拟头节点统一处理所有节点对的交换逻辑。初始状态:dummy(0) -> 1 -> 2 -> 3 -> 4,prev = dummy。状态:2 -> 1 -> 4 -> 3,prex.next = 4,prex = 3;状态:0 -> 2 -> 1 -> 3 -> 4,prex = 1;

2026-02-06 21:10:17 681

原创 力扣刷题16

将"()()"加入result中,此时result = ["(())","()()"];第一层递归:backtrack("(",1,0) ,len("(") = 1 < 4,执行选择1和选择2;第三层递归:调用backtrack("(())",2,2),len ("(())")=4 → 满足终止条件。2、选择 2:close_count (1) <2 → 调用backtrack("(())",2,2)。2、选择 2:close_count (1) <2,调用backtrack("()()",2,2)。

2026-02-05 14:51:50 678

原创 力扣刷题15

1、第一层调用:merge(1->3->5,2->4->6) -> 1 < 2 -> 1.next = merge(3->5,2->4->6),返回1;2、第二层调用:merge(3->5,2->4->6) -> 3 > 2 ->2.next = merge(3->5,4->6),返回2;3、第三层调用:merge(3->5,4->6) -> 4 > 3 ->3.next = merge(5,4->6),返回3;7、list1为空,循环结束,current.next = list2,也就是剩下的数字6;

2026-02-04 21:15:01 565

原创 力扣刷题14

接下来进入循环:slow = dummy,fast = 21、第一次循环:fast从2到3,slow从dummy --> 1 --> fast.next = 4None,继续;2、第二次循环:fast从3到4,slow从1 --> 2 --> fast.next = 5None,继续;3、第三次循环:fast从4到5,slow从2 --> 3 --> fast.next = None,循环结束。

2026-02-02 14:43:16 682

原创 力扣刷题13

j = 2,nums[j] = 0,初始化left = 3,right = 5,nums[left] = 0,nums[right] = 2,进入循环;j = 3,nums[j] = 0,初始化left = 4,right = 5,nums[left] = 1,nums[right] = 2,进入循环;j = 1,nums[j] = -1,初始化left = 2,right = 5,nums[2] = 0,nums[5] = 2,进入循环;,nums[i] = -2,进入第二层循环,j从j + 1开始。

2026-01-31 16:24:00 796

原创 力扣刷题12

处理第二个数字“3”:temp为空,遍历result = ["a","b","c"],再遍历数字“3”对应的字母“def”,拼接之后得到:["ad","ae","af","bd","be","bf","cd","ce","cf"],current_sum = - 1 < target,此时更新left = 3,right = 3,结束循环。temp = ["ad","ae","af","bd","be","bf","cd","ce","cf"],result更新为上述列表。注意 1 不对应任何字母。

2026-01-30 17:35:35 1239

原创 力扣刷题11

题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。这个题我用的是横向扫描法,先把第一个字符当作“初始公共前缀”,然后用这个前缀和后面的每个字符串作对比,如果当前字符串不以这个前缀开头,就把前缀砍掉一个字符,重复这个过程,直到前缀匹配成功,或者验证出来没有公共前缀。用所给示例模拟一下:(以["flower","flow","flight"]为例)1、初始prefix = “flower”

2026-01-28 20:00:09 588

原创 力扣刷题10

i = 0时,roman_map[0] = M,M = 1000,M > C(1000 > 100),total += 1000,total = 1000;i = 5时,roman_map[5] = I,I = 1,I < V(1 < 5),total -= 1,total = 1989;i = 0时,roman_map[0] = I,I = 1,V = 5,I < V,total -= 1,total = -1;我们可以统一遍历,当当前字符的值小于下一个字符的值时,就减去当前值;

2026-01-27 21:23:12 578

原创 力扣刷题9

第一次移动:left=1,right=8,height[left]=8,height[right]=7,面积7*7=49;第三次移动:left=1,right=6,height[left]=8,height[right]=8,面积5*8=40;第六次移动:left=1,right=3,height[left]=8,height[right]=2,面积2*2=4;第七次移动:left=1,right=2,height[left]=8,height[right]=6,面积1*6=6;,只通过了部分样例。

2026-01-26 20:21:58 550

原创 力扣刷题8

第一题:回文数题目:给你一个整数x,如果x是回文整数,返回true,否则返回false。回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数。对于这个题,我有两种做法:(1)直接反转字符串,观察反转后的字符串是否与原字符串相等,最后返回判断结果;(2)先排除特殊情况:整数是负数和结尾数字是0的。按奇数和偶数来分,这里的奇数和偶数是以字符串x的长度为衡量标准,只反转一半,观察字符串的前后部分是否相等。这种写法非常简洁,逻辑也很清晰。

2026-01-26 17:03:35 792

原创 正则表达式相关知识点

1、正则表达式是一个特殊的字符序列,它能帮助我们更加简便地检查一个字符串是否与某种模式匹配。正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成。在Python中需要通过正则表达式对字符串进行匹配时,需要用到re模块。2、正则表达式的应用场景表单验证、爬虫、文本数据处理(1)导入re模块import re(2)使用match方法进行匹配操作re.match能够匹配出以xxx开头的字符串,如果起始位置没有匹配成功,就会返回None。

2026-01-24 21:02:08 1032

原创 力扣刷题7

这个是思路非常清晰的版本,然后我又研究了一下,想试试能不能用逐项取位的方法做出来,这个方法我刚开始只设置了一个判断条件,只过了部分样例,后面去搜了一下逐项取位还可以用哪些判断方法比大小以后,我又加了一个判断条件,这次的样例全过了。当然了,因为有空格和数字这些,我还想到了正则表达式,抱着试一试的心态,试了几次之后还真成功了。既然写了这个方法,我当然要复习一遍正则表达式的相关知识点了,因为我也没记住,一直盯着百度才把这个代码写出来的。:将整数转为字符串,反转字符串,将字符串转回整数,检查溢出。

2026-01-24 15:09:44 732

原创 力扣刷题6

初始化:用列表存储每行字符,用记录当前行,step控制方向;核心循环:遍历每个字符,放到对应行 → 判断是否到边界 → 调整方向 → 更新下一行;结果拼接:把各行的字符按顺序拼起来,就是 Z 字形变换后的结果。ok,又搞定了一个题。

2026-01-21 20:09:23 161

原创 力扣刷题5

题目:最长回文字串给你一个字符串s,找出s中最长的回文字串。我想到的第一个做法是中心扩展。回文子串的特点是关于中心对称,我们可以枚举每个可能的中心,然后向两边扩展,找到以该中心为对称轴的最长回文。

2026-01-21 19:38:18 824

原创 力扣刷题记录4

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2,请你找出并返回这两个数组的中位数。算法的时间复杂度应为O(log(m+n))。时间复杂度达到 O(log(m+n)),所以不能用简单的合并数组再找中位数的方法(那是 O (m+n) 复杂度),于是我采用的是二分法。首先得搞懂中位数的概念,要看数组的长度是奇数还是偶数。但数组的长度为奇数时,中位数就是中间的那个数,反之就是中间两个数的均值。这样,中位数就可以直接从左右两边的最大最小值中计算出来。题目:寻找两个正序数组的中位数。

2026-01-20 20:34:21 178

原创 力扣刷题记录3

给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度。这个题考的是滑动窗口,核心是用哈希表记录字符最新位置。滑动窗口的知识点倒是没怎么为难我,所以我不写知识点。题目:无重复字符的最长字串。好的,继续干下一篇。

2026-01-20 19:13:22 54

原创 力扣刷题记录2

(4)最终结果取虚拟头节点.next,就是正常的链表头节点。self.next是当前节点的后继指针,指向下一个节点的内存地址,通过它能找到下一个元素,如果next=None,那么这个节点就是最后一个节点。链表:所有元素(节点)在内存中是分散存储的,每个节点之间靠指针相互连接,像一串珍珠项链,珍珠=节点,绳子=指针。虚拟头节点的定义:创建一个空值的节点,让这个空节点的next指向链表的真实头节点,这个空节点就是虚拟头节点。链表的最小单位:节点(Node),节点是链表的核心,链表的所有数据都储存在节点里。

2026-01-19 22:09:40 455

原创 力扣刷题记录1

这就是我的优化版本,我把暴力法的遍历操作换成了哈希表的O(1)查找,这就是哈希的核心思想:以空间换时间。这是暴力解法,题目很好理解,就是找出给定数组中和为target的两个数的下标,因为不能重复使用相同的元素,所以我用了切片操作。遍历数据时,把“查找的key”和“对应的value”存入哈希表;来,总结一下,这个题我用了两种方法,暴力解法和哈希,对其优缺点也有了更深的理解,接下来我还想写一下我对哈希的理解。我看到这道题的时候,想到了很多版本的答案,但因为好久没写python代码了,写的时间长了一点。

2026-01-19 15:06:12 345

原创 python调用百度智能云API完成文本情感分析

本来我想用R语言实现的,但是我比较擅长python,于是我就开始尝试用python调用第三方平台来完成这个操作,经过一下午的尝试,我还真成功了,所以就出现了这篇文章。我们来解读一下结果:log_id是本次请求的唯一日志,用于定位和排查问题,然后就是我们的参数无效,说明我们要上传必要参数,也就是要获取access_token。ok,所以我本次的情感分析也就完成了,我写的可能不是很好,有兴趣的同学可以和我探讨一下,内容仅供参考。好的,我们的access_token就获取成功了。

2026-01-17 21:57:47 995

原创 算法赛解析

这个锦囊一共包含了n个小写字符 ,可以表示为s = s1s2...sn,牛郎冥思苦想后,决定了选择顺序,记为p = p1p2...pn,并计划从织女的字符锦囊中按顺序分别取出第p1,p2个字符,按顺序组成新的名字。具体来说,对于每个成员1,2,...,n,请你计算出与该成员的距离为2的其他成员的数量(“距离”是指树中两个成员之间直接相连的边的数量)。给定两个长度相等的小写字符串s和t,牛郎需要判断是否可以从s和t中各删除一个字符,使得删除后的s经过重新排列后等于t,若可以则输出YES,否则输出NO。

2024-08-11 17:08:14 662

原创 scrapy框架爬取豆瓣top250电影排行榜完整代码

就是我的期末作业了(我早就考了,成绩还是可以滴),感兴趣的朋友可以看看,多多指教。其实我也知道有更简单的方法,但是,懒癌犯了,不想写。心血来潮写了这么多,就这样吧。关于此篇文章,如果有疑问,欢迎随时交流学习,只要我在线,肯定回。注意:仅供参考,要是用来交作业的话,部分内容得改一下。

2024-07-17 21:27:55 434

原创 scrapy框架爬取豆瓣top250电影排行榜(下)

此外,在我调试的过程中,我发现得做反爬措施。

2024-07-17 21:14:37 1085

原创 scrapy框架爬取豆瓣top250电影排行榜(上)

(我使用的是pycharm编辑器)

2024-07-17 21:01:03 1414

原创 python基础知识点(蓝桥杯python科目个人复习计划70)

但是,我不知道为啥,每次我运行这个代码,首先出来的是柱状图,将其关闭后还要过一会儿才会出现词云图,我一直不理解。小明对数位中含有2、0、1、9的数(不包含前导0)很感兴趣,在1到40中这样的数共有28个,它们的和是574。那这篇就这样了,我会在下一篇详细地写出scrapy爬取豆瓣的流程,感兴趣的朋友可以看一看,顺便指出我的错误。我自己的做法是将得到的数据保存为json格式,然后我要画出柱状图和词云图。今天只写一个题,灵感爆发,我想再续写一下爬虫的相关内容。共一行,包含一个整数,表示符合条件的数的和。

2024-07-16 21:38:17 488

原创 python基础知识点(蓝桥杯python科目个人复习计划69)

编写一个程序,建立了一条单向链表,每个节点包含姓名、学号、英语成绩、数学成绩、c++成绩,并通过链表操作平均分最高的学生和平均分最低的学生并且输出。由题意可知,y会在0.5,1.5,2.5,......这些时刻被吃掉,因此,我们可以把60分钟分成120份,这样就方便多了。接下来的n行,每行输入5个数据,分别表示姓名、学号、英语成绩、数学成绩、c++成绩,注意,成绩有可能是小数。一个新出生的x,半分钟之后吃掉一个y,并且此后,每隔一分钟吃掉一个y。ok,今天就3题,别的明天再说,最近先做基础题。

2024-07-16 11:46:24 523 1

原创 爬虫阶段思考

从spiders中获得一个请求(REQUEST),通过引擎传递给调度器,之后再返回给引擎,引擎把url封装好后传递给下载器,下载器将资源下载好后返回一个应答(RESPONSE),之后引擎将该应答发送给spiders,让其进行抓取,返回给引擎,然后解析出实体(Items)交给实体管道进行下一步操作。里面的host,port,user,password,database,这些东西都要自己改。我搞的有点复杂,因为我刚开始不知道有另一种方法,所以我就记录我的方法了。我在帮别人改代码的过程中,发现了很多问题。

2024-06-23 23:47:25 1300 1

原创 爬虫部分知识点(1)

好了,这篇我就只写这么多,并不是我不想多写,而是爬虫本身的成分复杂,我怕误写一些不该写的,爬虫这部分我也只会写几篇。这个代码的内容是:爬取虎牙直播,并获取主播人气排行(一直在变动,所以每个人的结果可能都不一样)ok,这就是我的完整代码。其中的一些操作我就不解释了,如果遇到问题,欢迎随时和我讨论。网络爬虫也叫网络蜘蛛,特指一类自动批量下载网络资源的程序,这是一个比较口语化的概念。接下来我来写一个原生爬虫,不高级,但是可以让大家理解爬虫的原理。网络爬虫的作用有很多,比如数据采集,搜索引擎,模拟操作。

2024-05-15 10:01:50 501

原创 第十五届蓝桥杯python B组省赛

这是我第一次参加蓝桥杯,成绩并不理想,我反思了一下午,我的问题主要是知识点学不透,题目做的太少,而且学习的时候少数时间不专心,但是,我能感觉到我的学习能力并不弱,不过,这恰恰提醒了我,我的学习方法有问题,那这次就这样吧,反正不能放弃学习,明年继续,不能再有学习态度方面的问题了。一共有以下6对格子:(1,2) - (2,1),(2,2)- (3,1),(2,1)- (3,2),(2,1)- (1,2),(3,1)- (2,2),(3,2)- (2,1)随着2024年的钟声回荡,传说中的时空之门再次敞开。

2024-05-10 21:41:50 1953

原创 其他知识点

然后也是同样的道理,不过这次用的是括号里面的值,就可以得到第二幅图了。一条从具有坐标(x,y)的像素p,到具有坐标(s,t)的像素q的通路,是具有坐标(x0,y0),(x1,y1),(x2,y2),...(xn,yn)的不同像素的序列。其中,(x0,y0) = (x,y),(xn,yn) = (s,t),(xi,yi)和(xi-1,yi-1)是邻接的,1 <= i <= n,n是路径的长度。4邻域:像素p(x,y)的4邻域是:(x + 1,y),(x - 1,y),(x,y + 1),(x,y - 1)

2024-04-29 20:47:07 1088

原创 python 基础知识点(蓝桥杯python科目个人复习计划54)

这片森林被一种神秘的力量保护着,这种力量由一个特殊的神秘阵列控制,这个阵列由N块石碑组成,每块石碑上都刻有一个神秘的数Ai。具体来说,我们首先设定一个初始的二分查找范围,比如从0到一个很大的数,然后,我们不断地取中间值,检查是否存在大小为x的花束满足打包k朵不同颜色花束的要求。基德需要掌握这个序列的力量,来对抗森林中的邪恶力量,他的朋友小新给了他一个神秘的水晶球,可以用来查询这个阵列的信息。在这个问题中,妮妮学姐希望将她收到的花束打包成尽可能多的花束,每个花束中包含不同颜色的花朵,而且每个花束的数量为k。

2024-02-28 16:30:36 1287

原创 python 基础知识点(蓝桥杯python科目个人复习计划43)

最长上升子序列是指在一个给定的序列中,仅需要保持元素的相对顺序不变,找到一个最长的子序列,使得子序列中的元素按照严格递增的顺序排列。最长公共子序列是指在两个序列中都存在的一个最长的子序列,可以不连续,但是其元素在两个序列中的相对顺序保持不变。

2024-02-17 08:41:37 1573 1

空空如也

空空如也

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

TA关注的人

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