如题,谷歌两轮背靠背电面。两轮都是废话不多说直奔coding,虽然第一轮的中国大哥还是花了一点点时间了解了一下我的背景、毕业时间、research方向。说好的research面呢?
中国大哥出的题:
Given a set of integers, print out all the subsets For example, {1, 2, 3} output: {}, {1,2}, …., {1,2,3}
我的解法:
1 public ArrayList<ArrayList<Integer>> findsubsets (int[] S) { 2 Arrays.sort(S); 3 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); 4 ArrayList<Integer> set = ArrayList<Integer>(); 5 for (int i=0; i<S.length(); i++) { 6 helper(set, res, S, i, 0); 7 } 8 return res; 9 } 10 11 public void helper(ArrayList<Integer> set, ArrayList<ArrayList<Integer>> res, int[] S, int i, int starter) { 12 if(res.size() == i) { 13 res.add(new ArrayList<Integer>(set)); 14 return; 15 } 16 for (int j=starter; j<S.length(); j++) { 17 set.add(S[j]); 18 helper(set, res, S, i, j+1); 19 set.remove(S[j]); 20 } 21 } 22