问题描述
我正在研究N皇后问题和生成括号问题。
当您想要一个List<List<Integer>>
作为结果,并且想要向其中添加List<Integer>
时,您需要进行深度复制吗?像result.add(new ArrayList<Integer>(cur))
但是,如果您希望将List<String>
作为结果,则可以执行result.add(sb.toString())
。
为什么将stringbuilder.toString添加到列表中不需要深层副本?
谢谢您的时间
以下是代码的一部分。它们是递归函数的基本情况。
N个皇后区:
public void helper(int n,List<Integer> cur,List<List<Integer>> result){
if (cur.size() == n){
**result.add(new ArrayList<Integer>(cur));**
return;
}
生成括号:
private void helper(int n,StringBuilder sb,int left,int right,List<String> result) {
if (sb.length() == n * 2){
**result.add(sb.toString());**
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)