28.找出字符串中第一个匹配项的下标-力扣(Leetcode)可以调用find解决,代码如下classSolution:defstrStr(self,haystack:str,needle:str)->int:returnhaystack.find(needle)当然,除了使用内置函数,还有其他的方法可以找出字符串在另一个字符串中的第一个匹配项的下标。这些方法主要涉及到了搜索和匹配的算法。以下是几种可能的方法:滑动窗口法:这是一个较为直观的方法,通过将‘needle’的长度作为滑动窗口,从‘haystack’的左边开始滑动,比较窗口内的字符串和‘needle’是否相等。defstrStr(ha
哈希表理论基础一般哈希表都是用来快速判断一个元素是否出现集合里。当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构:数组set(集合)map(映射)当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。242.有效的字母异位词-力扣(LeetCode)直接调库ACfromcollectionsimportCounterclassSolution:defisAnagram(self,s:str,t:str)->bool:returnCounter(s)==
344.反转字符串-力扣(Leetcode)一开始写的时候循环的终止条件出了点问题,没有+1,这里应该通过几个小数的特例判断一下classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""n=len(s)-1foriinrange(n//2+1):s[i],s[n-i]=s[n-i],s[i]returns541.反转字符串II-力扣(Leetcode)这里一开始思路不清楚,后来看了下参考代码,发现Python的列表切片操作会自动处理那些超出列表长
24.两两交换链表中的节点-力扣(LeetCode)一次AC,重点是要画图梳理清楚交换节点的过程#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:dummy_node=ListNode(next=head)cur=dummy_nodewhilecur.next!=Nonean
🏆🏆🏆🏆🏆🏆🏆欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格:红色文字表示:重难点✔★蓝色文字表示:思路以及想法✔★ 如果大家觉得有帮助的话,感谢大家帮忙点赞!收藏!转发! 我的qq号是:1210931886,欢迎大家加群,一起学习,互相交流,共同进步🎉🎉✨✨🥇🥇🥇🥇🥇🥇🥇蓝桥杯系列,为大家提供做题全集,备战蓝桥杯,就做这个系列的题即可一个大概的做题规划——大家最好在此基础上提前两个月准备备战蓝桥杯就刷这些题第一天博客链接-基础算法-上第二天博客链接-基础算法-下+数据结构专题第三天博客链接-搜索与图论-上专题第四天博客链
🏆🏆🏆🏆🏆🏆🏆欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格:红色文字表示:重难点✔★蓝色文字表示:思路以及想法✔★ 如果大家觉得有帮助的话,感谢大家帮忙点赞!收藏!转发! 我的qq号是:1210931886,欢迎大家加群,一起学习,互相交流,共同进步🎉🎉✨✨🥇🥇🥇🥇🥇🥇🥇蓝桥杯系列,为大家提供做题全集,备战蓝桥杯,就做这个系列的题即可一个大概的做题规划——大家最好在此基础上提前两个月准备备战蓝桥杯就刷这些题第一天博客链接-基础算法-上第二天博客链接-基础算法-下+数据结构专题第三天博客链接-搜索与图论-上专题第四天博客链
链表理论基础Python中的链表定义classListNode:def__init__(self,val,next=None):self.val=valself.next=next203.移除链表元素-力扣(LeetCode)调了一段时间,主要卡在边界条件的判断不严谨以及删除节点的时候没有用循环#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defremoveElements(self,head:
454.四数相加II-力扣(Leetcode)乍一看没想到比较好的思路,然后大概扫了下解答,开始两两拆分用set去做,但是这种方法没法考虑不同组合的和一样的情况,又改成了dict做,代码如下classSolution:deffourSumCount(self,nums1:List[int],nums2:List[int],nums3:List[int],nums4:List[int])->int:sum_12_dict={}foriinrange(len(nums1)):forjinrange(len(nums2)):ifnums1[i]+nums2[j]notinsum_12_dict:su
试题历届真题砝码称重【第十二届】【省赛】【A组】 这道题的思路是动态规划,这也是我第一次接触动态规划算法。我的理解如下:以题目中给的测试样例来看,给定3个砝码146,第一个砝码1必定能测出来,第二个砝码则是在1可测的基础上进行计算,可测重量有4,1+4,4-1三种。由此构建dp二维数组完成代码80%解如下,最后两组数据超时,这个逻辑用c++跑可以全部通过,python运行太慢了...n=int(input())dp=[[0foriinrange(100000)]foriinrange(n)]str1=input().split()a=[]#砝码数组SUM=0foriinstr1:x=int(i
977.有序数组的平方-力扣(LeetCode)双指针法一次AC,主要思想为,从大往小保存然后倒序返回classSolution:defsortedSquares(self,nums:List[int])->List[int]:iflen(nums)==0:returnnumsnew_nums=[]l=0r=len(nums)-1whilelr:ifabs(nums[l])>=abs(nums[r]):new_nums.append(nums[l]**2)l+=1else:new_nums.append(nums[r]**2)r-=1returnnew_nums[::-1]209.长度最小的子