当前位置:   article > 正文

2021.06.15

2021.06.15

括号生成–力扣

方法:回溯

回溯算法框架:

result = []
def backtrack(路径, 选择列表):
    if 满足结束条件:
        result.add(路径)
        return
    
    for 选择 in 选择列表:
        做选择
        backtrack(路径, 选择列表)
        撤销选择
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

核心回溯算法代码

public void core(StringBuilder sb, List<String> res, int leftCount, int rightCount, int n) {
   
    if(sb.length() == n * 2){
   
        res.add(sb.toString());
        return;
    }
    
    if(leftCount < n){
   
        sb.append('(');
        core(sb, res, leftCount+1, rightCount, n);
        sb.deleteCharAt(sb.length() - 1);
    }

    if(rightCount < leftCount){
   
        sb.append(')');
        core(sb, res, leftCount, rightCount+1, n);
        sb.deleteCharAt(sb.length() - 1);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
 

Java 静态变量和成员变量的区别

静态变量 成员变量
存放位置 方法区
生命周期 对象
所属 对象
调用对象 类和对象
 

是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?

区分两种情况,调用前是否显示创建了对象实例

1)没有显示创建对象实例:不可以发起调用,非静态方法只能被对象所调用,静态方法可以通过对象调用,也可以通过类名调用,所以静态方法被调用时,可能还没有创建任何实例对象。因此通过静态方法内部发出对非静态方法的调用,此时可能无法知道非静态方法属于哪个对象。

public class Demo {
   
    public static void staticMethod() {
   
        
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/418254
推荐阅读
相关标签
  

闽ICP备14008679号