S*******C 发帖数: 822 | 1 http://oj.leetcode.com/problems/subsets/
第一种格式:res作为局部变量避免线程安全问题,但比较啰嗦
public ArrayList> subsets(int[] num){
if(num==null) return null;
Arrays.sort(num);
ArrayList> res=new ArrayList>(
);
res.add(new ArrayList());// [[]]
dfs(res, num,0,new ArrayList());
return res;
}
private void dfs(ArrayList> res, int[] num, int pos,
ArrayList temp){
for(int i=pos;i
temp.add(num[i]);
res.add(new ArrayList(temp));
dfs(res, num,i+1,temp);
temp.remove(temp.size()-1);
}
}
第二种格式:res作为成员变量,有线程安全问题,但很简洁
private ArrayList> res=null;
public ArrayList> subsets(int[] num){
res=new ArrayList>();
if(num==null || num.length==0)
return res;
Arrays.sort(num);
res.add(new ArrayList());//res = [[]]
rec(num, 0, new ArrayList());
return res;
}
private void rec(int[] num, int begin, ArrayList temp){
for(int i=begin; i
if(i > begin && num[i] == num[i - 1]) continue;
temp.add(num[i]);
res.add(new ArrayList(temp));
rec(num, i+1, temp);
temp.remove(temp.size()-1);
}
} | P*******L 发帖数: 2637 | 2 都不好,看我的:
def subsets(self, S):
R = [[]]
for s in sorted(S):
R += [r+[s] for r in R]
return R
>(
【在 S*******C 的大作中提到】 : http://oj.leetcode.com/problems/subsets/ : 第一种格式:res作为局部变量避免线程安全问题,但比较啰嗦 : public ArrayList> subsets(int[] num){ : if(num==null) return null; : Arrays.sort(num); : ArrayList> res=new ArrayList>( : ); : res.add(new ArrayList());// [[]] : dfs(res, num,0,new ArrayList()); : return res;
| S*******C 发帖数: 822 | 3 用JAVA怎么写?
【在 P*******L 的大作中提到】 : 都不好,看我的: : def subsets(self, S): : R = [[]] : for s in sorted(S): : R += [r+[s] for r in R] : return R : : >(
| h*d 发帖数: 19309 | 4 我觉得如果需要debug的话后者好,另外编译的时候很多东西优化掉了,性能没有损失
,后者可读性也应该强些。
>(
【在 S*******C 的大作中提到】 : http://oj.leetcode.com/problems/subsets/ : 第一种格式:res作为局部变量避免线程安全问题,但比较啰嗦 : public ArrayList> subsets(int[] num){ : if(num==null) return null; : Arrays.sort(num); : ArrayList> res=new ArrayList>( : ); : res.add(new ArrayList());// [[]] : dfs(res, num,0,new ArrayList()); : return res;
| S*******C 发帖数: 822 | | R*********d 发帖数: 34 | 6 算法面试不考虑线程安全吧,如果有特殊要求,加个同步锁就好了。
怎么自己顺手就怎么写
纯属个人意见
>(
【在 S*******C 的大作中提到】 : http://oj.leetcode.com/problems/subsets/ : 第一种格式:res作为局部变量避免线程安全问题,但比较啰嗦 : public ArrayList> subsets(int[] num){ : if(num==null) return null; : Arrays.sort(num); : ArrayList> res=new ArrayList>( : ); : res.add(new ArrayList());// [[]] : dfs(res, num,0,new ArrayList()); : return res;
| c********p 发帖数: 1969 | |
|