首页 > 其他分享 >Leetcode刷题第八天-回溯

Leetcode刷题第八天-回溯

时间:2024-02-02 18:25:25浏览次数:44  
标签:return 第八天 self re num path Leetcode backtracking 刷题

22:括号生成

链接:22. 括号生成 - 力扣(LeetCode)

括号是一对,所以每一次递归结束条件是字符串长度=2*n

有效括号判断:'('个数==')'个数时,当前必须是'(','('个数==n时,必须是')',其他情况当前位置遍历两边,既可以是'('又可以是')'

 1 class Solution:
 2     def generateParenthesis(self, n: int) -> List[str]:
 3         if not n :  return []
 4         re=[]
 5         
 6         self.backtracking(2*n,re,"",0)
 7         return re
 8     def backtracking(self,n,re,path,index):
 9         if(len(path)==n):   
10             re.append(path)
11             return
12         for i in range(index,n):
13             num=self.isValid(path,i,n)
14             if(num):    self.backtracking(n,re,path+num,i+1)
15             else:
16                 self.backtracking(n,re,path+'(',i+1)
17                 self.backtracking(n,re,path+')',i+1)
18 
19     def isValid(self,path,index,n):
20         count1,count2=path.count('('),path.count(')')
21         if(count1==count2 ):   return '('
22         if(count1==n//2):   return ')'
23         return 0
generateParenthesis

89:格雷编码

链接:89. 格雷编码 - 力扣(LeetCode)

天哪噜,谁敢信这么个玩意做了一下午

标签:return,第八天,self,re,num,path,Leetcode,backtracking,刷题
From: https://www.cnblogs.com/xiaoruru/p/18003636

相关文章

  • [LeetCode] 2966. Divide Array Into Arrays With Max Difference
    Youaregivenanintegerarraynumsofsizenandapositiveintegerk.Dividethearrayintooneormorearraysofsize3satisfyingthefollowingconditions:Eachelementofnumsshouldbeinexactlyonearray.Thedifferencebetweenanytwoelementsin......
  • leetcode85. 最大矩形
    85.最大矩形-力扣(LeetCode)参考dp求最大字串和的思想,将一维dp转化为二维的形式,将当前列的和当成一维的数进行dp即可。这题和求最大子矩阵和的dp思路一样。1classSolution{2public:3intmaximalRectangle(vector<vector<char>>&matrix){4intn=m......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • Leetcode刷题第六天-回溯
    131:分割回文串链接:131.分割回文串-力扣(LeetCode)for遍历字符串递归切割,切割到字符串尾,单次结束1classSolution:2defpartition(self,s:str)->List[List[str]]:3if(nots):return[]4re=[]5self.backtracking(s,[],re,......
  • datawhale-leetcode打卡:038~050题
    两数相加(leetcode002)#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defaddTwoNumbers(self,l1:Optional[ListNode],l2:Optional[List......
  • [刷题笔记] ybt 1364:二叉树遍历(flist)
    Problem_LinkDescription树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。Analysis我们先前做过给定前序......
  • leetcode 42 单调栈解法
    Problem:42.接雨水目录思路解题方法复杂度Code思路作为自己独立完成的第一道困难题,我觉得有必要纪念一下。就是单调栈的思路,不过需要减去栈中的每一项才是雨水的体积。最后一个因为不是柱子,所以在结束循环时可能会出现栈未空的情况,需要倒着再考虑一遍。解题方法遇到比当......
  • LeetCode 2808 使循环数组所有元素相等的最少秒数
    题目描述原题链接:2808.使循环数组所有元素相等的最少秒数解题思路每次变化可以选择变成前一个元素或后一个元素,包括[0]和[n-1]的转化;换个角度思考,每秒最多可以有两个不同元素nums[i-1]和nums[i+1]变化成nums[i]元素;假设nums[i]元素只出现一次,想要将所有元素同化那么......
  • Leetcode刷题第五天-二分法-回溯
    215:第k个最大元素链接:215.数组中的第K个最大元素-力扣(LeetCode)em~~怎么说呢,快速选择,随机定一个目标值,开始找,左边比目标小,右边比目标大,左右同时不满足时,交换左右位置,直到左指针比右指针大,交换目标和右指针位置的值,此时右指针位置即时目标值的在排序好数组中的位置,如果k在右......
  • 每日刷题 绘制表格
    一.题目在中文Windows环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。比如:┌─┬─┐│││├─┼─┤│││└─┴─┘其实,它是由如下的符号拼接的:左上=┌上=┬右上=┐左=├中心=┼右=┤左下=└下=┴右下=┘垂直=│水平=─......