Subsets 求子集 @LeetCode

Java版回溯法求子集和Demo 从X{a1,a2,a3,...,an}集合用回溯法按照升序或降序找出和的第一个子集,可设置最大求解时间。 立即下载
package Level3;

/**
 * Subsets
 * 
 * Given a set of distinct integers, S, return all possible subsets.

Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If S = [1,2,3], a solution is:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]
 * 
 */

import java.util.ArrayList;
import java.util.Arrays;

public class S78 {

	public static void main(String[] args) {
		int[] S = {1,2,3};
		System.out.println(subsets(S));
	}

	public static ArrayList<ArrayList<Integer>> subsets(int[] S) {
		int len = S.length;
		ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
		Arrays.sort(S);
		
		// 利用2进制对应的bit来求所有subset,2进制中,0代表不选,1代表选择
		for(int i=0; i<Math.pow(2,len); i++){
			ArrayList<Integer> list = new ArrayList<Integer>();
			int tmp = i;
			// 对长为len的数,循环检查最右位是否为一
			for(int j=0; j<len; j++){
				int bit = tmp & 1;
				tmp >>= 1;
				if(bit == 1){
					list.add(S[j]);
				}
			}
			ret.add(list);
		}
		return ret;
    }
	
}



任何一个元素都可以放入子集,也可以不放入子集

package Recursion;

import java.util.ArrayList;
import java.util.List;

public class Subsets {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
		subsets(list);
	}
	
	public static void subsets(List<String> list){
		ArrayList<ArrayList<String>> ret = new ArrayList<ArrayList<String>>();
		List<String> done = new ArrayList<String>();
		rec(done, list, ret);
//		System.out.println(ret);
		for (ArrayList<String> al : ret) {
			System.out.println(al);
		}
	}

	public static void rec(List<String> done, List<String> rest, ArrayList<ArrayList<String>> ret){
		if(rest.size() == 0){
			ret.add(new ArrayList<String>(done));
			return;
		}
		
		String head = rest.remove(0);
		done.add(head);
		rec(done, rest, ret);
		done.remove(done.size()-1);
		
		rec(done, rest, ret);
		rest.add(0, head);
	}
}


注意:

List<List<Integer>> ret = new ArrayList<List<Integer>>();


public class Solution {
    public List<List<Integer>> subsets(int[] S) {
        List<List<Integer>> ret = new ArrayList<List<Integer>>();
        ArrayList<Integer> list = new ArrayList<Integer>();
        Arrays.sort(S);   // to keep ascending order
        rec(S, ret, list, 0);
        return ret;
    }
    
    public void rec(int[] S, List<List<Integer>> ret, List<Integer> list, int pos) {
        if(pos >= S.length) {
            ret.add(new ArrayList<Integer>(list));
            return;
        }
        
        rec(S, ret, list, pos+1);
        
        list.add(S[pos]);
        rec(S, ret, list, pos+1);
        list.remove(list.size()-1);
    }
}




字符串替换—牛客网(C++实现) 一.题目描述 请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。 给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。 测试样例: “A%sC%sE”,7,[‘... 阅读详情

相关推荐

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3874

leetcode 求子集

leetcode 78 – 求子集 双非普本想刷题,不会递归老是迷。 碰到乐扣求子集,不会做啊干着急。 题目描述(中等难度): 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入:nums = [0] 输出:[[],[0]] 提示: 1 &lt

三少说 326

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 536

LeetCode子集、子集II的三种解法

文章目录子集解法一、DFS解法二、回溯解法三、枚举子集II解法一、DFS+HashSet判重解法二、回溯+排序解法三、枚举 子集 【题目描述】 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 【说明】: 解集不能包含重复的子集。 【示例】: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 【来源】 78. 子集 解法一、DFS 每一个数有选和不选两种选择,对于含重复元素的整数数

JohnnyLin 1051

告别VLC!用Python+OpenCV实时拉取RTSP监控流,并实现抽帧降低延迟(附完整代码)

本文介绍了一种基于Python和OpenCV的低延迟RTSP监控流处理方案,通过抽帧技术显著降低延迟并保持视频分析准确性。文章详细讲解了RTSP流处理的基础挑战、抽帧技术原理与实现,以及完整的低延迟处理方案,包括硬件加速配置和动态抽帧算法,帮助开发者优化监控视频流处理性能。

weixin_30333885的博客 274

DIY一个SM2262ENG 2TB Nvme固态硬盘,慧荣SM2262EN主控

网友订做的 材料: 慧荣科技的62en,2片1G 三星DDR4缓存,4颗PF29F04T2AOCTH1,8CE B17A。SM2262EN属于慧荣第二代PCIe SSD主控,支持PCIe G3×4通道和全新的NVMe 1.3规范、8个NAND通道设计,并提供完整固件设计,最大循序读取速度高达3.5GB/s,循序写入速度达3.0GB/s,随机读写则高达420K IOPS和420K IOPS。此外,还采用目前最先进的低功耗设计,无论是在待机还是在工作状态下,均展现超低功耗,有效减少30%的功耗,满足用户追求超

m0_55207244的博客 1万+

90. 子集 II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 输入:nums = [1,2,2] 输出:[[],[1],[1,2],[1,2,2],[2],[2,2]] 示例 2: 输入:nums = [0] 输出:[[],[0]] 提示: 1 <= nums.length <= 10 -10 <= nums[i] <= 10 解答 递归+回溯 class Sol

WhiteGray的博客 265

Sentinel2 哨兵2数据下载方法(USGS)-史上最全讲解

本文讲述了从USGS官网下载Sentinel2的方法。主要包括USGS官网的注册和下载流程,以及选定研究区中所出现的问题、解决办法。

xiatiandexia123的博客 6万+

回溯法解算法题-leetcode中的组合排列求子集问题

回溯算法的模板: List<Object> list = new ArrayList<>(); public void backtrack(路径,选择列表){ //设置结束条件 if 满足结束条件{ lista.dd(路径); return; } //候选节点的选择 for(int i=start;i<选择列表的长度;i++){ //做选择 是否要将当前节点添加到list中

Lavender-csdn的博客 518

Unreal5 从入门到精通之 学习Niagara特效系统

UE5 Niagara粒子系统解析 Niagara是UE5中的高性能粒子特效系统,相比传统粒子系统具有完全可编程性和可视化节点编辑两大特点。核心单元发射器(Emitter)分为模板发射器(预设效果如喷泉、火焰)和空白发射器(高度自定义)。系统提供13种预设模板,包括吹飞粒子、五彩纸屑爆发、动态光束等常见特效。 Niagara采用三级模块化设计: 系统级:全局参数设置与更新 发射器级:控制粒子生成规则与行为 粒子级:处理单个粒子的生命周期和渲染 关键模块包括初始化粒子属性、物理模拟、颜色渐变等,支持GPU加速

TxNet 1124

Unitree G1仿人机器人协同搬箱:从仿真搭建到多机协同部署完整指南

Unitree G1仿人机器人协同搬箱技术方案摘要 本文提供了一套完整的Unitree G1人形机器人协同搬箱解决方案,涵盖从仿真环境搭建到多机协同部署的全流程。核心内容包括: 双仿真环境配置:同时搭建Gazebo+ROS Noetic基础仿真环境与Isaac Gym+Mujoco高性能RL训练环境,支持Sim2Sim迁移验证 训练框架搭建:详细配置unitree_rl_gym框架,提供PPO算法定制化训练流程和参数优化方案 数据集应用:整合宇树开源真机数据集(UnifoLM-WBT-Dataset)~~~

huanghm88的专栏 472

leetcode 数组求子集(subset)

描述一个数组,求它的子数组,包括空集. 解法对数组里的数一个一个的添加进结果集,每添加一个,复制前面所有的list,并将新的元素复制给每一个copy的list,再添加新元素作为单独子集,所有元素遍历完成之后,再添加空集即可. 举例数组S [1, 2, 3]{1}{1,2}{2}{1,3}{1,2,3}{2,3}{3}{} 代码public ArrayList<ArrayList<Integer>>

Tsongski的专栏 1239

业态即战场:零售平台的生意模型与系统设计解构

在这篇文章中,我们从“控货、自营、联营”三种典型零售业态出发,拆解了亚马逊、阿里、京东和本地闪购平台在商品模型设计上的差异与博弈。看似简单的卖货方式背后,其实是平台在“控货权”“商品归属权”上的深层策略博弈:谁掌控商品,谁就掌控数据、流量与利润分配权。本文尝试用一套通俗但不失专业的方式,帮助产品经理和技术伙伴读懂零售平台商品模型的底层逻辑与系统设计演化路径。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

Subsets II 求有重复元素的集合的子集 @LeetCode

与之前的Subsets题相比,改用HashSet来作为天然的过滤。 package Level4; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Subsets II * * Given a colle

3055

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Subsets II @Leetcode

Subsets II  //Given a collection of integers that might contain duplicates, nums, return all possible subsets. //For example, If nums = [1,2,2], a solution is: [ /**   [2],   [1],   [1,2,2],  

Hanwenwangad的专栏 458

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【LeetCode 78】 ——求子集 (两种解法)

求子集 思路一:(一切尽在调试中,一个一个的把它带出来,我不知道咋说,反正就是那么个意思,但要注意的是最先开始要给存放结果的vector一个空间) class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector<vect...

Vicky_Cr的博客 446

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LeetCode 90 Medium 求子集2 Python

方法一:     算法:递归/回溯     思路:         和第78题,求子集思路类似,但是不同的是这里要【去重】,以及【排序】             n个元素的集合子集数目有2^n次方个,但是由于集合中有重复元素,所以实际的集合数目达不到这么多         最直观的去重思想就是用set✅,但是要注意在python中,list对象是不能放到set中的,所以放到      ...

h 609

LeetCode 78求子集

题目链接:https://leetcode-cn.com/problems/subsets/ description: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路: ...

EmotionComputer 441

leetcode78 求子集

问题描述:输入一个不包含重复数字的数组,要求输出这些数字的所有子集。 例子:输入[1,2,3],应输出8个子集,包含空集和自身。 [ [],[1],[2],[3],[1,3],[2,3],[1,2],[1,2,3] ] 【思路1】递归/迭代 从空集开始,保存当前集合到res,遍历下一个元素并添加到所有当前子集,重复红字直至最后。 public List<List<Integer>> subsets(int[] nums) { List<List<Integer>&g

蜗牛君 320

算法----递归求子集

#include&lt;stdio.h&gt; #include&lt;string.h&gt; char s[50]; int index = 0;//标记选择后的字符下标 void reSort(char *pArray, int begin,int pLen , int len) { if (pLen == 0) { puts(s); return; } for (i...

风清扬 3383

今天写了递归求子集程序

原来对算法理解太弱了,就没有思路的 // generate all subsets of n elements #include // define globalsint x[20],  // subset vector    n;      // number of elements void Subsets(int i){// Output all subsets of x[1:n]. //

老实技术男 2407

LeetCode 78. Subsets (位运算入门:利用位运算求子集)

78.Subsets Medium 163241FavoriteShare Given a set ofdistinctintegers,nums, return all possible subsets (the power set). Note:The solution set must not contain duplicate subsets. Example: I...

gh6267的博客 1092

LeetCode78--求子集

这道题目一看我,我的第一想法就是递归 public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> alllist=new ArrayList<>(); alllist.add(new ArrayList<Intege...

weixin_42113372的博客 225

Python LeetCode求子集

def subsets(nums): item = [] result = [] result.append(item) def generate(i, nums): if i >= len(nums): return item.append(nums[i]) result.append(list(item)) generate(i + 1, nums) item.

ALakers的博客 683

输入一个字符串,求出该字符串包含的字符集合,例如:输入 abcqwerabc ,输出,acbwqer

方法一: 设置一个bool数组,用来记录字符的置为,初始化为false、 bool vis[74] = { false }; 设置一个num字符数组记录需要输出的字符 char num[55]; 设置一个字符数组, 并输入 char ch[101]; cin >> ch; 遍历字符串,利用ASCII码值给相应的字符置位 for (int i = 0; ch[i]; i++...

persistence_Y的博客 2254

Valid Number 判断一个string是不是有效地数字表达式 @LeetCode

这道题看了看网上的解法,很多都做得很麻烦。其实我觉得,这道题就是考察正则表达式。 package Level2; /** * Valid Number * * Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false "1 a" =>

1万+
上一篇: Combinations 求1...n中k长度的组合 @LeetCode
下一篇: Word Search 在一个二维字符矩阵里找单词 @LeetCode
chiiis
博客等级 码龄14年 422粉丝 429原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值