• leetcode22


    public class Solution {
        public IList<string> GenerateParenthesis(int n)
            {
                List<string> list = new List<string>();
                backtrack(list, "", 0, 0, n);
                return list;
            }
    
            private void backtrack(List<String> list, String str, int open, int close, int max)
            {
    
                if (str.Length == max * 2)
                {
                    list.Add(str);
                    return;
                }
    
                if (open < max)
                {
                    backtrack(list, str + "(", open + 1, close, max);
                }
                if (close < open)
                {
                    backtrack(list, str + ")", open, close + 1, max);
                }
            }
    }

    https://leetcode.com/problems/generate-parentheses/#/description

    重新实现了一遍,也是使用回溯法。先使用python来做,本地测试正常,但是在leetcode上提交却WA,于是把python代码改写为C#,则AC了。

    因此判断是OJ对python的代码判定有些问题,暂时不知道是什么原因。之前做题时,用CPP的代码也会出现这种问题,换成Java或C#则能正常AC。

    现在把C#的正常AC的代码先贴出来:

     1 public class Solution
     2     {
     3         private List<string> list = new List<string>();
     4 
     5         private void BackTrack(int L, int R, int n, string str)
     6         {
     7             if (L >= R && L < n)
     8             {
     9                 BackTrack(L + 1, R, n, str + '(');
    10                 if (L > R)
    11                 {
    12                     BackTrack(L, R + 1, n, str + ')');
    13                 }
    14             }
    15 
    16             else if( L> R && L== n)
    17             {
    18                 BackTrack(L, R + 1, n, str + ')');
    19             }
    20             else if (L == n && R == n)
    21             {
    22                 list.Add(str);
    23             }
    24         }
    25 
    26         public IList<string> GenerateParenthesis(int n)
    27         {
    28             string str = "(";
    29             int L = 1;
    30             int R = 0;
    31             BackTrack(L, R, n, str);
    32             return list;
    33         }
    34     }

    下面是python的实现,这个和上面的C#的使用的是同样的逻辑,但是WA。

     1 class Solution:
     2     y=list()#结果集合    
     3     def generateParenthesis(self, n: 'int') -> 'List[str]':
     4         string = '('
     5         L = 1#左括号数量
     6         R = 0#右括号数量
     7         self.BackTrack(L,R,n,string)
     8         return self.y
     9 
    10     def BackTrack(self,L,R,n,string):
    11         #print('L='+str(L)+'|R='+str(R)+'|string='+string)
    12         if L>=R and L<n:
    13             self.BackTrack(L+1,R,n,string+'(')
    14             if L > R:
    15                 self.BackTrack(L,R+1,n,string+')')
    16         elif L>R and L==n:
    17             self.BackTrack(L,R+1,n,string+')')
    18         elif L == R  == n:
    19             self.y.append(string)
    20         else:
    21             return
    22         return

    错误信息如下:

    经过实验,是全局变量self.y中的数据造成的影响,于是把y改为局部变量,就可以正常提交了:

     1 class Solution:    
     2     def generateParenthesis(self, n: 'int') -> 'List[str]':
     3         y=list()
     4         string = '('
     5         L = 1#左括号数量
     6         R = 0#右括号数量
     7         self.BackTrack(L,R,n,string,y)
     8         return y
     9 
    10     def BackTrack(self,L,R,n,string,y):
    11         if L == R  == n:
    12             y.append(string)
    13         elif L == n and R < n:
    14             self.BackTrack(L,R+1,n,string + ')',y)
    15         elif L < n and R < n:
    16             self.BackTrack(L+1,R,n,string + '(',y)
    17             if L > R:
    18                 self.BackTrack(L,R+1,n,string + ')',y)
    19         return

  • 相关阅读:
    Zabbix,Nagios,OneAPM Servers 安装部署大比拼
    Android 手把手带你玩转自己定义相机
    Sublime Text3 快捷键
    超具体Windows版本号编译执行React Native官方实例UIExplorer项目(多图慎入)
    poj 1664 放苹果(递推)
    在HyperLedger Fabric中启用CouchDB作为State Database
    HyperLedger Fabric 1.0的Transaction处理流程
    如何将Bitcoin比特币区块链数据导入关系数据库
    在Ubuntu中部署并测试Fabric 1.0 Beta
    在Ubuntu上快速搭建基于Beego的RESTful API
  • 原文地址:https://www.cnblogs.com/asenyang/p/6851664.html
Copyright © 2020-2023  润新知