Leetcode之backtracking
阿新 • • 發佈:2017-11-18
。。 ack color 遇到 target 一個空格 sel 明顯 ima
其實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