LeetCode Day24|理论基础、77.组合(回溯三部曲1递归函数的参数和返回值2确定函数的终止条件3单层递归逻辑)

OCR文字识别基础 ocr文字识别 阅读详情

day24-1 回溯算法理论基础

  • 递归函数下面一般紧跟的就是回溯算法
  • 回溯算法一般是纯暴力搜索
  • 回溯法解决的问题都可以抽象为树形结构(N叉树)
  • 能够解决哪些问题?
    • 组合问题:N个数里面按一定的规则找出k个数的组合
    • 切割问题:一个字符串按一定规则有几种切割方式
    • 子集问题:一个N个数的集合里面有多少符号条件的子集
    • 排列问题:强调顺序
    • 棋盘问题:N皇后和解数独
  • 过程:
    • 终止条件:收集结果
    • 单层搜索逻辑:处理结点+递归函数+回溯操作
// 回溯算法模版
void backtracking(参数){
	if(终止条件){
		// 搜索到叶子结点就找到了一条满足条件的答案
		存放结果;
		return;
	}
	// 遍历过程 for循环横向遍历,backtracking递归纵向遍历
	for(选择:本层集合中的元素(数中节点孩子的数量就是集合的大小)){
		处理结点;
		backtracking(路径,选择列表);//递归 
		回溯,撤销处理的结果
	}
}

day24-2 77.组合

为啥要用回溯算法?

  • 解决多层嵌套循环的问题

树形结构

在这里插入图片描述

回溯三部曲

  • 递归函数的参数和返回值
  • 确定函数的终止条件
  • 单层递归逻辑

代码实现

class Solution {
    List<List<Integer>> result = new ArrayList<>();
    LinkedList<Integer> path = new LinkedList<>(); // 用于收集路径
    public List<List<Integer>> combine(int n, int k) {
        combineHelper(n,k,1);
        return result;
    }
    void combineHelper(int n, int k, int startIndex){
        // 终止条件
        if(path.size() == k){
            result.add(new ArrayList<>(path));
            return;
        }
        // 遍历过程 for循环横向遍历,combineHelper递归纵向遍历
        for(int i = startIndex; i <= (n - (k - path.size()) + 1); i++){
        // for(int i = startIndex; i <= n; i++){
            // 进行剪纸操作:
            // path.size():已经选择的元素个数
            // k - path.size():还需要的元素的个数
            // n- (k - path.size() ):在集合n中至少要从
            path.add(i); // 处理节点
            combineHelper(n, k, i + 1); // 递归
            path.removeLast();// 回溯, 撤销处理的节点
        }
    }
}

剪纸操作树形结构

在这里插入图片描述

耗时

  • 总共2h
Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. 阅读详情

相关推荐

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 377

代码随想录算法训练营DAY24|C++回溯算法Part.1|回溯算法理论基础、77.组合、组合问题的剪枝操作

举个例子,n = 4,k = 3, 目前已经选取的元素为0(path.size为0),n - (k - 0) + 1 即 4 - ( 3 - 0) + 1 = 2。回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是先写逻辑,然后需要什么参数,就填什么参数。在上面我们提到了,回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。既然回溯问题可以抽象成树形结构,那么遍历树形结构一定要有终止条件,所以回溯也要有终止条件。给他画一个回溯算法的搜索过程。

糖炒栗子 1332

关于使用CMT2300A FIFO缓存区间设置为64Byte的问题

帮助你解决在使用CMT2300A 时遇到的各种问题,若有需要,请及时与我交流

teleger的博客 1428

算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)

算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)

weixin_47284299的博客 872

昇腾910B多卡环境下hccl-test性能调优实战

本文详细介绍了昇腾910B多卡环境下hccl-test性能调优的实战经验,包括环境搭建、CANN工具链配置、性能测试与高级调优技巧。通过优化缓冲区、PCIe拓扑和中断亲和性设置,显著提升多卡通信效率,为AI训练提供稳定高效的计算支持。

weixin_29216049的博客 833

高分系列卫星轨道、传感器参数等信息

遥感卫星数据简介-高分系列

中遥科 3309

刷题DAY24 | LeetCode 77-组合

本篇我们讲解了,什么是回溯算法,知道了回溯和递归是相辅相成的。接着提到了回溯法的效率,回溯法其实就是暴力查找,并不是什么高效的算法。然后列出了回溯法可以解决几类问题,可以看出每一类问题都不简单。最后我们讲到回溯法解决的问题都可以抽象为树形结构(N叉树),并给出了回溯法的模板。77 组合(medium)给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。本题是回溯法的经典题目。

wangs29的博客 1146

UM982上位机调试【精简版】

分享一些关于UM982卫导模块上位机调试的简快捷单小功能。

在线求职中... 1万+

【代码随想录算法训练营Day24】● 回溯法理论基础 ● 77. 组合

程序在运行过程中分成了多个阶段通过某些手段将数据恢复到之前的某一阶段,就称之为回溯手段包括:1. 方法栈;2. 自定义栈。

Tammy2001的博客 1081

FPGA调试利器:VIO与ILA在Vivado中的实战应用指南

本文详细介绍了Vivado中FPGA调试工具VIO与ILA的实战应用技巧。VIO作为虚拟输入/输出工具,可实时调整参数;ILA作为集成逻辑分析仪,能高效捕获内部信号。文章通过具体案例展示了如何配置ILA采样深度、触发条件,以及VIO的动态参数调整功能,帮助开发者提升上板调试效率,解决常见通信失败、数据不同步等问题。

weixin_42553471的博客 424

【开发必备插件】iframe嵌套报“拒绝连接请求”的本地解决方法

关键词:iframe 拒绝连接、X-Frame-Options、Chrome 插件、前端调试、Allow X-Frame-Options前几天我在本地项目里调试一个第三方网站的嵌入页面时,遇到了一个非常经典的报错:xxx.com 拒绝了我们的连接请求。熟悉的老前端们一眼就知道——这是。但对于日常开发来说,我们经常需要在本地测试 iframe 嵌套外部页面(比如嵌第三方登录页、支付页、可视化报表系统等)。而线上站点配置了或DENY时,就会直接导致 iframe 加载失败。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1540

代码随想录算法训练营 day24 | 回溯算法理论基础、77. 组合

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。所以下面,回溯函数也就是递归函数,指的都是一个函数。

weixin_42179093的博客 450

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Day24】回溯算法part1——理论基础与组合

回溯法也可叫做回溯搜索法,它是一种搜索方式。回溯是递归的副产品,只要有递归就会有回溯,回溯函数也就是递归函数,指的都是一个函数。

格子格鸽的个人博客 502

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码随想录 day24 第七章 回溯算法part01

回溯函数模板返回值以及参数。

weixin_60315213的博客 1044

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

代码随想录算法训练营第day24|理论基础 、 77. 组合

从下图中红线部分可以看出,在集合[1,2,3,4]取1之后,下一层递归,就要在[2,3,4]中取数了,那么下一层递归如何知道从[2,3,4]中取数呢,靠的就是startIndex。第一次取1,集合变为2,3,4 ,因为k为2,我们只需要再取一个数就可以了,分别取2,3,4,得到集合[1,2] [1,3] [1,4],以此类推。可以看出这棵树,一开始集合是 1,2,3,4, 从左向右取数,取过的数,不再重复取。,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。

qq_60513199的博客 1128

代码随想录刷题day24 回溯算法理论基础;77. 组合

代码随想录刷题day24

weixin_43127049的博客 288

DAY24 回溯2

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]

yk2909438315的博客 280

【代码随想录】算法训练营day24 | 回溯理论基础 + LeetCode77组合

代码随想录训练营day24的内容,包含回溯理论基础和力扣77题组合问题。

Maisidk的博客 279

代码随想录Day24 | 回溯

Day24

sRiddle的博客 887

代码随想录算法训练Day24|回溯理论基础、LeetCode77-组合

回溯基本介绍回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案抽象成一种图形结构,所有的回溯法都可以抽象成一个树形结构(N叉树 )回溯算法通过递归来控制有多少层for循环,递归里的每一层就是一个for循环。

wish的博客 507

Day24--回溯算法

前面二叉树还没步入正轨,为了尽量赶上进度,觉得先进行下一章节的学习,周末时间补回之前落下的二叉树的进度。今天开始的回溯算法,我在之前也有过接触,但没有完整地写出过代码。借着这次进度,我也接着复习一下。

B7_0729的博客 399

day24 | 第七章 回溯算法part01● 理论基础 ● 77. 组合

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。

mest_gg的博客 188

Day24|回溯算法part01:理论基础、77. 组合

回溯也是一种暴力搜索算法,for循环+递归;回溯三部曲和递归三部曲类似回溯可以剪枝。

weixin_43303286的博客 146

算法训练day24|回溯算法part01(回溯算法理论基础、LeetCode77. 组合(剪枝处理))

回溯算法理论基础、组合(剪枝处理)

weixin_43399263的博客 384

代码随想录算法训练营Day24 | 回溯算法理论基础、LeetCode77. 组合、剪枝操作

1、回溯法和递归法是相辅相成的,递归逻辑底层就是回溯,通常所说的回溯函数其实就是递归函数。2、回溯法的效率不高,本质就是暴力查找,在一些复杂的问题中能够有一种方法进行暴力查找就不错了,提升效率的方法就是做一些剪枝的处理。3、通常回溯可以解决的问题包括:组合、切割、子集、排列、棋盘问题。4、回溯问题都可以抽象成一个N叉树的结构,元素的个数代表了树的宽度,递归的层数代表了树的深度。5、回溯法模板。

ckw_lztxdy的博客 555

算法训练营DAY24|77.组合

回溯算法和经典例题leetcode77.组合

weixin_59867637的博客 243
上一篇: LeetCode Day14|理论基础、递归遍历、迭代遍历、统一迭代
下一篇: LeetCode Day38|● 理论基础(五部曲:1.数组含义2.公式3.初始化4.顺序5.打印)● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
浅笑醉丿颜
博客等级 码龄5年 201粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值