算法笔记:子集

豆瓣9.6分统计学神作ISL之第六章读书笔记(上),带你系统学习向前(后)逐步筛选法、岭回归(Ridge Regression)、拉索回归(Lasso Regression) 全网最认真的豆瓣9.6分统计学高分神作ISL的第六章学习笔记,让你一文看明白模型逐步筛选法、正则化法的技术细节。看不明白算我输,关注博主绝不后悔!! 阅读详情

子集

子集题目地址
这道题是算法的入门题,但是涉及到很多基础知识,看了我很久。

标识法

可以把给定数组的元素按照二进制的方式表示出来,

class Solution {
    List<Integer> temp = new ArrayList<Integer>();
    List<List<Integer>> ans = new ArrayList<List<Integer>>();
    public List<List<Integer>> subsets(int[] nums) {
        int n = nums.length;
        //1 << n 是2的n次方,mask & (1 <<n)是判断当前位是否存在
        for (int mask = 0; mask < (1 << n); ++mask) {
            temp.clear();
            //每个数字都判断一次是否存在mask中
            for (int i = 0; i < n; ++i) {
                if ((mask & (1 << i)) != 0) {
                    temp.add(nums[i]);
                }
            }
            ans.add(new ArrayList<Integer>(temp));
        }
        return ans;
    }
}

回溯法

回溯法这道题有几个步骤:
1.画出递归树,找到状态变量,要找到回溯方法的参数。
2.根据题意,确立结束条件,这题没有明确的结束条件,超过边界有for循环来控制,无需单独定义。
3.找准选择列表(与函数参数相关),与第一步紧密关联。
4.判断是否需要剪枝
5.作出选择,递归调用,进入下一层
6.撤销选择,删除一个。
对应代码如下:

import java.util.ArrayList;
class Solution {

    List<List<Integer>> result = new ArrayList<>();
    //临时数组
    List<Integer> temp = new ArrayList<Integer>();
    public List<List<Integer>> subsets(int[] nums) {
        //开始回溯,传入当前位置
        dfs(0, nums);
        return result;
    }
    public void dfs(int cur, int[] nums){
        //1.结束条件,没有特别的结束条件,所以直接返回结果
        result.add(new ArrayList<Integer>(temp));
        //2.寻找选择条件
        for(int j = cur; j < nums.length; j++){
            //3.做选择
            temp.add(nums[j]);
            dfs(j + 1, nums);
            //4.撤销选择
            temp.remove(temp.size() - 1);
        }
    }   
}
IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K) LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍 阅读详情

相关推荐

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 617

回溯算法学习笔记(一)子集型:电话号码的字母组合,子集,分割回文串

ps:笔记和代码按本人理解整理,重思路

学习记录 997

Landsat 9 数据预处理第一步:在ENVI里正确加载影像的保姆级指南(含MTL文件处理)

本文详细介绍了Landsat 9数据在ENVI中的预处理流程,重点讲解了MTL文件的关键修改与正确加载方法,帮助遥感新手快速掌握数据加载技巧。通过辐射定标、大气校正等步骤,确保数据达到分析就绪状态,适用于土地覆盖分类等高级应用。

weixin_29201313的博客 207

算法笔记_074:子集和问题(Java)

目录 1 问题描述 2 解决方案 2.1 全排列思想求解 2.2 状态空间树思想求解   1 问题描述 求n个正整数构成的一个给定集合A = {a1,a2,a3,...,an}的子集,子集的和要等于一个给定的正整数d。请输出所有符合条件的子集。       2 解决方案 本文下面编码思想参考自文末参考资料1,下面的思想讲解直接引用文末参考资料1。 2.1 ...

weixin_33717298的博客 358

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

maopig的专栏 2万+

解决西门子Step 7 basic 找不到许可证问题

你在使用博图软件是否遇到过Step 7 basic 找不到许可证的问题呢!不言怕,今天我就来告诉你该如何处理吧!看步骤: 1.删除原授权的License: 打开Automation License Manager应用,然后我们可以发现仅有的License Key前面有一个时钟,说明它已经过期不可用,我们就要去寻求新的Key. 打开“我的电脑”,选择C盘,点击上方查看 点击选项–>查看 然...

让技术没有门槛 14万+

【C++学习笔记2】探索C++中的子集问题:搜索与回溯算法的应用与优化

干货满满的一篇搜索与回溯算法之子集问题的文章!

胖鹅の的博客 990

从仿真到流片:手把手教你优化65nm CMOS电荷泵的电流匹配与稳定性

本文详细介绍了在65nm CMOS工艺下优化电荷泵电流匹配与稳定性的工程实践指南。通过蒙特卡洛仿真、运放反馈结构版图技巧和全差分结构设计,实现优于1%的电流匹配精度和±2%以内的电流稳定性,特别针对current mismatch问题提供了有效的解决方案。

weixin_42522320的博客 415

leecode刷题笔记-回溯算法大集合(题型一:排列,组合,子集)

深度优先遍历、递归、栈,三者的共同点:后进先出

weixin_44021180的博客 648

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 903

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 148

刷题笔记(二十一)--回溯算法:分割丶子集丶全排列问题

回溯算法的完结内容

weixin_53860901的博客 567

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5650

LeetCode 78. 子集:回溯算法求幂集的完整剖析(InterviewGuide 校招刷题笔记)

> 本文是 InterviewGuide 仓库「精选力扣 300+ 道算法题」系列中[回溯算法专题](https://link.gitcode.com/i/3e9fdf353df5357062a243bbea02ec50)的经典题目解析。题目本身要求用不含重复元素的整数数组生成全部子集(幂集),是回溯算法、DFS 与递归思想的入门级必刷题,也是互联网校招与社招笔试、面试手撕环节的高频考察点。读完本

gitblog_00908的博客 13

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【算法学习笔记】1:回溯法中子集树与排列树(装载/最大团/n皇后/旅行商)

解空间就是所有解的可能取值构成的空间, 一个解往往包含了得到这个解的每一步,往往就是对应解空间树中一条从根节点到叶节点的路径。 子集树和排列树都是一种解空间,它们不是真实存在的数据结构,也就是说并不是真的有这样一棵树,只是抽象出的解空间树。 约束条件Constraint是问题中就限定好的条件,比如在装载问题中装入第i个物体后不能超过背包总容量时才考虑装入它,即搜索左子树的情况。 限界条件Bound是需要自己挖掘的一个

大桔骑士的学习笔记 7693

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

编译原理笔记5:从正规式到词法分析器(2):NFA 记号识别、确定化、并行算法、子集法构造DFA

因想要的是从状态集合 A 出发进行经过 a 的状态转移再求个空闭包,因此我们需要对于集合 A 中的每个状态,都进行一次 a 状态转移,再将转移后的结果放入一个新的集合,最后对这个集合整体求一次空闭包。接下来,再从上一步得到的集合中的所有点同时出发,每一个状态都按照上面相同的方式去尝试所有可达的下一状态,然后将所有收集到的可达状态再放入一个新的集合——这样我们就获得了从第二个状态出发的可达状态集合……),从 A 开始经过a、b能够到达的下一状态,和从 C 开始经过a、b能够到达的下一状态是相同的!

VengaZ的学习博客 1246

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

笔记:代码随想录算法训练营第35天: 01背包问题 二维、 01背包问题 一维 、LeetCode416. 分割等和子集

这一块儿学得挺痛苦。

jingjingjing1111的博客 558

Day 41 卡玛笔记

这是一篇算法打卡文章

“只要有信念,就一定会成功” 798

zlatan的算法笔记7--回溯法中的子集问题(力扣78题)

本题在力扣上是与组合问题连在一起的,在回溯的做法当中,二者有很多相似之处,只需要理解子集问题所解决的问题就可以解题了。

qq_43408360的博客 221

【学习笔记】子集DP

有一类问题和子集有关。给你一个集合S,令T为S的超集,也就是S所有子集的集合,求T中所有元素的和。

Brute♂force 1501

算法设计与分析学习笔记(6)——排列树与子集树

常见的解空间结构 1.子集树 概述:子集树是使用回溯法解题时经常遇到的一种典型的解空间树。当所给的问题是从n个元素组成的集合S中找出满足某种性质的一个子集时,相应的解空间树称为子集树。此类问题解的形式为n元组(x1,x2…xn),分量xi(1,2,…n)表示第i个元素是否在要找的子集中。xi的取值为0或者1,xi=0 表示第i个元素不在要找的子集中;xi=1 表示第i个元素在要找的子集中。 树的根结点:初始状态 中间结点:某种情况下的中间状态 叶子结点:结束状态 分支:从一个状态过渡到另一个状态的行为 从

qq_45976312的博客 9631

数据结构与算法 - 子集问题:回溯法生成所有子集的两种方式

本文深入解析了子集问题的两种回溯解法: 逐层扩展法:基于二叉决策树,每个元素独立选择"选/不选",递归深度固定为n,逻辑简单清晰,适用于需要完整决策路径的问题。 逐个添加法:基于多叉决策树,通过start参数控制选择范围,每个中间状态都是有效解,天然避免重复组合,更适合需要及时收集结果的场景。 两种方法各有优势: 方式一更直观体现决策过程 方式二生成顺序更自然 方式二更容易扩展处理含重复元素的情况(需配合排序去重) 文中通过Java代码实现和mermaid流程图详细展示了两种方法的执行过

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

[leetcode算法·回溯]回溯算法秒杀所有排列/组合/子集问题

本文参考labuladong算法笔记[无论是排列、组合还是子集问题,简单说无非就是让你从序列numsnums。以组合为例,如果输入,和为 7 的组合应该只有[7]。nums。以组合为例,如果输入,和为 7 的组合应该有两种[2,2,2,1]和[5,2]。nums。以组合为例,如果输入,和为 7 的组合应该有两种[2,2,3]和[7]。当然,也可以说有第四种形式,即元素可重可复选。但既然元素可复选,那又何必存在重复元素呢?元素去重之后就等同于形式三,所以这种情况不用考虑。

Captain823Jack的博客 1583

子集反演 & 高维前缀和 & sos dp 学习笔记

设gS表示集合S的答案,fS为S的子集的答案和。fST∈S∑​gTgST∈S∑​−1∣S∣−∣T∣fT本质上就是容斥原理,可感性理解,证明略(给你你也记不住)。于是便可以通过求f得到g。

deng_cheng_yu的博客 1519

[算法题解详细]DFS解力扣78子集

输入:nums = [0]输出:[[],[0]]nums 中的所有元素 互不相同思路这题我们要注意题目中的要求,解集不能包含重复的子集,假如用示例1举例子,就是我们在枚举完有关1的子集之后,就不再去关注1了,直接忽略它,遍历的起点就需要从2再开始,对于[1 ,2, 3]这个例子我画了一张解空间树的图,其中红色的就是枚举的所有子集通过图我们可以很清晰的看到枚举完包含1的所有子集后,为了避免重复,之后遍历的起点就是从1后一位开始的,遍历完2,3也是一样的,接下来我们看代码代码。

2401_85158364的博客 1896

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 166
上一篇: 关于MacOS上无法打开GHub问题
下一篇: 螺旋输出矩阵
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值