
小姐姐上岸 Facebook,分享一题面试中遇到的题,Facebook 还是比较爱考原题的。
给定一个可能具有重复数字的列表,返回其所有可能的子集。
样例 1:
输入:[0] 输出: [ [], [0] ] 样例 2:
输入:[1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 
public class Solution { /** * @param nums: A set of numbers. * @return: A list of lists. All valid subsets. */ public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> res = new ArrayList<>(); // 排序 Arrays.sort(nums); // dfs 搜索 Deque<Integer> subset = new ArrayDeque<>(nums.length); dfs(nums, 0, subset, res); return res; } private void dfs(int[] nums, int k, Deque<Integer> subset, List<List<Integer>> res) { // 当前组合存入 res res.add(new ArrayList<>(subset)); // 为 subset 新增一位元素 for (int i = k; i < nums.length; ++i) { // 剪枝 if (i != k && nums[i] == nums[i - 1]){ continue; } subset.addLast(nums[i]); // 下一层搜索 dfs(nums, i + 1, subset, res); // 回溯 subset.removeLast(); } } } Facebook 面试官帮你搞定 90%大厂高频动规题,帮你 14 天突击国内大厂面试最爱考的动态规划题型~
搜集近 3 年大厂 90%高频动规考题,你想进的,这里都有 字节跳动 /网易 /腾讯 /微软 /百度 /快手 /blibli/美团 /拼多多 /谷歌
区间型动态规划 /双序列动态规划 /划分型动态规划 /坐标型动态规划 /序列型动态规划 /背包型动态规划 /状态压缩动态规划
随时可以查看课程噢~ 戳我现在 9 元即可秒杀
折扣码:AB3DF7 (使用方法:点击原价购买,然后在选择优惠框输入折扣码,即可 9 元获得全部课程)
1 GM 2020 年 9 月 21 日 点进来确认是不是有推广码。 然后心满意足地离开了。 |
2 hakunamatata11 OP @GM 本来就是推广节点啊 |