b*****i 发帖数: 130 | 1 我是按照这位大侠的解法来做leetcode subsets这题的。
http://blog.csdn.net/u011095253/article/details/9158397
01.public class Solution {
02. public ArrayList> subsets(int[] S) {
03. ArrayList> res = new ArrayList
Integer>>();
04. ArrayList tmp = new ArrayList();
05. Arrays.sort(S);
06. res.add(tmp);
07. dfs(res,tmp,S,0);
08. return res;
09. }
10.
11. public void dfs(ArrayList> res, ArrayList
tmp, int[] S, int pos){
12. for(int i=pos; i<=S.length-1;i++){
13. tmp.add(S[i]);
14. res.add(new ArrayList(tmp));
15. dfs(res,tmp,S,i+1);
16. tmp.remove(tmp.size()-1);
17. }
18. }
19.}
但是有一行代码不知道该怎么理解。。
line 14: res.add(new ArrayList(tmp));
为什么不能直接用 res.add(tmp)呢? java是为了刷题才开始学的,基本功太差。。。 | a**********0 发帖数: 422 | 2 必须新构建一个list表示temp 否则 list of list中每个都是temp 而每次对temp修
改就会导致最终结果被修改 | l*****a 发帖数: 14598 | 3 你shishi看不那么用会是什么结果
另外他的sort似乎没什么必要,如果有重的话只sort也不会有正确结果
【在 b*****i 的大作中提到】 : 我是按照这位大侠的解法来做leetcode subsets这题的。 : http://blog.csdn.net/u011095253/article/details/9158397 : 01.public class Solution { : 02. public ArrayList> subsets(int[] S) { : 03. ArrayList> res = new ArrayList: Integer>>(); : 04. ArrayList tmp = new ArrayList(); : 05. Arrays.sort(S); : 06. res.add(tmp); : 07. dfs(res,tmp,S,0);
| r****s 发帖数: 1025 | 4 最简单的解法,permutaion 加filter。
稍微精致一点,sort之后再permutate,permutate的时候只取比自己大的数(在sorted
array上面找)。 | s******y 发帖数: 936 | 5 为什么这么多人不理解java 的pass by reference 还有clone的原理。去多看看基础
的东西吧,你这样面试官随便一问你就搞不清了。
【在 b*****i 的大作中提到】 : 我是按照这位大侠的解法来做leetcode subsets这题的。 : http://blog.csdn.net/u011095253/article/details/9158397 : 01.public class Solution { : 02. public ArrayList> subsets(int[] S) { : 03. ArrayList> res = new ArrayList: Integer>>(); : 04. ArrayList tmp = new ArrayList(); : 05. Arrays.sort(S); : 06. res.add(tmp); : 07. dfs(res,tmp,S,0);
| w**z 发帖数: 8232 | 6 Java passes copy of reference
【在 s******y 的大作中提到】 : 为什么这么多人不理解java 的pass by reference 还有clone的原理。去多看看基础 : 的东西吧,你这样面试官随便一问你就搞不清了。
|
|