zoukankan      html  css  js  c++  java
  • 面试题 08.04. 幂集

    题干

    幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。

    说明:解集不能包含重复的子集。

    示例:

    输入: nums = [1,2,3]
     输出:
    [
      [3],
      [1],
      [2],
      [1,2,3],
      [1,3],
      [2,3],
      [1,2],
      []
    ]

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/power-set-lcci

    思路

    backtrack的模板

    private void backtrack("原始参数") {
        //终止条件(递归必须要有终止条件)
        if ("终止条件") {
            //一些逻辑操作(可有可无,视情况而定)
            return;
        }
    
        for (int i = "for循环开始的参数"; i < "for循环结束的参数"; i++) {
            //一些逻辑操作(可有可无,视情况而定)
    
            //做出选择
    
            //递归
            backtrack("新的参数");
            //一些逻辑操作(可有可无,视情况而定)
    
            //撤销选择
        }
    }

    写法

    [1,2,3] =[],[1]

     ⬆

    [1,2,3] = [],[1],[2],[1,2]

        ⬆

    [1,2,3] = [],[1],[2],[1,2],[3],[2,3],[1,3],[1,2,3]

           ⬆

    class Solution {
         public List<List<Integer>> subsets(int[] nums) {
            //结果集合
            List<List<Integer>> list = new ArrayList();
            //回溯方法
            backtrack(list,new ArrayList<>(),nums,0);
            return list;
        }
        public void backtrack(List<List<Integer>>list,List<Integer>tempList,int []nums,int start){
            list.add(new ArrayList<>(tempList));
            for(int i = start;i<nums.length;i++) {
                tempList.add(nums[i]);
                backtrack(list, tempList, nums, i + 1);
                tempList.remove(tempList.size() - 1);
            }
        }
    }
  • 相关阅读:
    matplotlib绘制常见统计图
    学习进度(14)
    hive的基本用法(2)
    hive的基本用法(1)
    进度日报表10
    进度日报表09
    进度日报表08
    进度日报表07
    第六周总结
    进度日报表06
  • 原文地址:https://www.cnblogs.com/ak918xp/p/14253027.html
Copyright © 2011-2022 走看看