Lc_78子集
2021/5/10 10:58:43
本文主要是介绍Lc_78子集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.example.leetcode; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List; /** * @description: 78. 子集 * 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 * <p> * 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 * <p> * <p> * <p> * 示例 1: * <p> * 输入:nums = [1,2,3] * 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] * 示例 2: * <p> * 输入:nums = [0] * 输出:[[],[0]] * <p> * <p> * 提示: * <p> * 1 <= nums.length <= 10 * -10 <= nums[i] <= 10 * nums 中的所有元素 互不相同 * @author: licm * @create: 2021-05-10 09:46 **/ public class Lc_78子集 { public static List<List<Integer>> subsets(int[] nums) { List<List<Integer>> res = new ArrayList<>(); Deque<Integer> path = new ArrayDeque<>(); backtracking(nums, 0, path, res); return res; } static void backtracking(int[] nums, int startIndex, Deque<Integer> path, List<List<Integer>> res) { res.add(new ArrayList<>(path)); if (startIndex >= nums.length) { return; } for (int i = startIndex; i < nums.length; i++) { path.addLast(nums[i]); /** * 为了不重复 索引 i+1 */ backtracking(nums, i + 1, path, res); path.removeLast(); } } public static void main(String[] args) { int[] nums = {1,2,3}; List<List<Integer>> res = subsets(nums); res.forEach(m -> { for (Integer r : m) { System.out.print(r + ""); } System.out.println(); }); System.out.println(); } }
这篇关于Lc_78子集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享