码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode之backtracking

时间:2017-11-18 12:39:10      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:zha   details   lan   back   backtrack   type   list   字符   逗号   

其实backtracking对我来说一直是一个难点。我分析不好,而且脑子会很乱。。

今天遇到了一道题:

Generate Parentheses(LC22 medium)

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

这道题明显是要用backtracking做最容易。先上代码:
class Solution(object):
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        def generate(current,left,right,result=[]):
            if left>0:
                generate(current+"(",left-1,right)
            if left<right: 
                generate(current+")",left,right-1)
            if not right:    result +=current ,
            return result
        return generate("",n,n)

这道题有两个点:1. python中逗号在字符串连接中的使用:

如果两个字符串用“逗号”隔开,那么这两个字符串将被连接,但是,字符串之间会多出一个空格:

‘Jim‘, ‘Green‘ = ‘Jim Green‘

2. backtracking!

对于这道题的backtracking,我用画堆栈的方法分析了一下,看起来很乱,但放上来可以提醒自己下次也用这种方法分析:

 技术分享图片

关于回溯法:http://blog.csdn.net/tongxinzhazha/article/details/77628450 写的很详细,包括模板示例

分析只是表层的级别,还是要多练才能熟练的写出来。



Leetcode之backtracking

标签:zha   details   lan   back   backtrack   type   list   字符   逗号   

原文地址:http://www.cnblogs.com/x1mercy/p/7856016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!