力扣刷题班 第3课 02-分治与回溯算法

news2024/11/24 23:01:39

分治(例题1)九键电话号码的字母组合

电话号码的字⺟组合 给定⼀个仅包含数字 2-9 的字符串,返回所有它能表示的字⺟组合。答案可以按 任意顺序 返回。 给出数字到字⺟的映射如下(与电话按键相同)。注意 1 不对应任何字⺟

• 示例 1: 输⼊:digits = "23" 输出:[“ad","ae","af","bd","be","bf","cd","ce","cf"]

• 示例 2: 输⼊:digits = "" 输出:[]

• 示例 3: 输⼊:digits = "2" 输出:[“a","b","c"]

leetcode17

d={2:'abc',3:'def',4:'ghi',
   5:'jkl',6:'mno',7:'pqrs',
   8:'tuv',9:'wxyz'
   }

res=[]
def gene(digits,i,s):
    if len(digits)==len(s):  #
        res.append(s)
        return

    m=d[int(digits[i])]   # 获得对应字母 digits[i]为str类型

    for a in m:
        gene(digits,i+1,s+a)  # 进入下一层  i加1 递归下一个位置 s+a保存当前字母


digits='29'   # str类型
gene(digits,0,'')
print(res)

没太懂

 分治(例题2)实现 pow(x, n) ,即计算 x 的 n 次幂函数

• 示例 1:

• 输⼊: 2.00000, 10

• 输出: 1024.00000

• 示例 2:

• 输⼊: 2.10000, 3

• 输出: 9.26100

• 示例 3:

• 输⼊: 2.00000, -2

• 输出: 0.25000

• 解释: 2-2 = 1/22 = 1/4 = 0.25

def pow(x,n):
    if n==1:
        return x

    y=pow(x,n//2)
    if n%2==0:
        return y*y
    else:
        return y*y*x

没太懂

 回溯(例题3)八皇后问题

在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两 个皇后都不能处于同⼀⾏、同⼀列或同⼀斜线上,问有多少种摆法。

回溯法:有冲突解决冲突,没有冲突往前⾛,⽆路可⾛往回退,⾛到最后是 答案。 

'''


递归参数:
     n: n皇后
     i: 递归到第几行 0
     l: 记录路径结果 [-1]*n


标记list:  lie=[]
           zXie=[]
           fXie=[]
'''

lie=[]
zXie=[]
fXie=[]
res=[]
def que(n,i,l):
    if n==i:
        res.append(l[:])
        return

    for j in range(n):  # 查找i行存放的位置
        if (j not in lie) and (i+j not in zXie) and (i-j not in fXie):  # j为可以放
            lie.append(j)
            zXie.append(i+j)
            fXie.append(i-j)
            l[i]=j
            que(n,i+1,l)
            lie.remove(j)
            zXie.remove(i+j)
            fXie.remove(i-j)
            l[i]=-1

l=[-1]*4
que(4,0,l)
print(res)

回溯(例题4)求⼦集

给你⼀个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的⼦集。

解集 不能 包含重复的⼦集。你可以按 任意顺序 返回解集。

示例 1:

输⼊:nums = [1,2,3]

输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输⼊:nums = [0]

输出:[[],[0]]

'''

i: 下一次开始的位置
n: nums的长度
l:记录结果  []

'''

res=[]  # 最终结果
def gene(nums,i,n,l):
    res.append(l)
    for j in range(i,n):
        gene(nums,j+1,n,l+[nums[j]])

nums=[1,2,3]
n=len(nums)
gene(nums,0,n,[])
print(res)

 回溯(例题5)多数元素

给定⼀个⼤⼩为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 ⼤于 ⌊ n/2 ⌋ 的 元素。

你可以假设数组是⾮空的,并且给定的数组总是存在多数元素。

示例 1:

输⼊:[3,2,3]

输出:3

示例 2:

输⼊:[2,2,1,1,1,2,2]

输出:2

力扣(LeetCode)169. 多数元素

没看懂题目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】Image Feature Extractors方法介绍合集(二)

文章目录 一、Mixed Depthwise Convolution二、Deformable Kernel三、Dynamic Convolution四、Submanifold Convolution五、CondConv六、Active Convolution七、Depthwise Dilated Separable Convolution八、Involution九、Dilated convolution with learnable spacings十、Att…

Elastic Stack 8.10:更简单的跨集群搜索和身份验证等等

作者:Tyler Perkins, Gilad Gal, Shani Sagiv, George Kobar, Michael Peterson, Aris Papadopoulos Elastic Stack 8.10 增强了跨集群和向量搜索、数据摄取、Kibana 和云注册。 配置远程搜索时获得更大的灵活性,并提供更多信息来分类问题,…

小白备战大厂算法笔试(八)——搜索

搜索 二分查找 二分查找是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。 Question: 给定一个长度为n的数组 nums ,元素按从小到大的顺序排列,数组…

git基本手册

Git and GitHub for Beginners Tutorial - YouTube Kevin Stratvert git config --global user.name “xxx” git config --global user.email xxxxx.com 设置默认分支 git config --global init.default branch main git config -h查看帮助 详细帮助 git help config 清除 cl…

计网第五章(运输层)(二)(端口号、复用和分用)

一、端口号 (1)基本概念 在上部分(计网第五章(运输层)(一)_永无魇足的博客-CSDN博客)提到运输层用不同的端口对应不同的应用进程。 端口就是用来区分不同应用进程的标识符。 每个…

HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明

一、文件-新建-新建项目 二、传统应用形态与IDE自带的模板可供选用与免安装的元服与IDE中自带模板的选择 三、以元服务,远程模拟器为例说明IDE整体结构 1区是工程目录结构,是最基本的配置与开发路径等的认知。 2区是代码开发与修改区,是开发…

分支分支分支分支

分支 查看分支 git branch -v 创建分支 git branch 分支名 切换分支 git checkout 分支名 合并分支 git merge 分支名 把指定的分支合并到当前分支上

【CMU15-445 Part-11】Join Algorithms

Part11-Join Algorithms Why Do We Need to Join? Join其实是关系数据库和范式化表时候所产生的副产物。 也就是说我们范式化表是为了减少冗余信息,而我们使用join就是为了去重建reconstruct 这些原本的tuple Join Algorithms 主要关注两表的inner equijoin a…

UE5学习笔记(1)——从源码开始编译安装UE5

目录 0. 前期准备1. Git bash here2. 克隆官方源码。3. 选择安装分支4. 运行Setup.bat,下载依赖文件5. 运行GenerateProjectFiles.bat生成工程文件6. 生成完成,找到UE5.sln/UE4.sln7. 大功告成 0. 前期准备 0.1 在windows的话,建议装一个Git…

基于SpringBoot的驾校管理系统

基于SpringBootVue的驾校管理系统、前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户、教练 管理员&#x…

Python 可迭代对象、迭代器、生成器

可迭代对象 定义 在Python的任意对象中,只要它定义了可以返回一个迭代器的 __iter__ 魔法方法,或者定义了可以支持下标索引的 __getitem__ 方法,那么它就是一个可迭代对象,通俗的说就是可以通过 for 循环遍历了。Python 原生的列…

(手撕)数据结构--->堆

文章内容 目录 一:堆的相关概念与结构 二:堆的代码实现与重要接口代码讲解 让我们一起来学习:一种特殊的数据结构吧!!!! 一:堆的相关概念与结构 在前面我们已经简单的学习过了二叉树的链式存储结…

城市管网污水监测方案,科技助力污水排放管理!

根据《国务院办公厅关于加强入河入海排污口监督管理工作的实施意见》各地要明确“水污染,谁治理”和政府兜底的原则,明确排污主体责任。根据排污口类型集中整治,划分主体。加大私设暗管借道排污的监察力度溯源主体责任。加强科技研发&#xf…

【数据结构】C++实现AVL平衡树

文章目录 1.AVL树的概念2.AVL树的实现AVL树结点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋插入代码 AVL树的验证AVL树的查找AVL树的修改AVL树的删除AVL树的性能 AVL树的代码测试 1.AVL树的概念 二叉搜索树虽然可以提高我们查找数据的效率,但如果插…

计网第四章(网络层)(八)(最短路径优先协议OSPF)

在第七节(计网第四章(网络层)(七)_永无魇足的博客-CSDN博客)我们总结了路由信息协议RIP。在最后我们提到了RIP协议有坏消息传的慢的问题,这是距离向量算法的本质决定的,所以这种问题…

c语言练习59:深入理解char类型的取值范围

深入理解char类型的取值范围 例如&#xff1a; #include <stdio.h> int main() {char a[1000];int i;for(i0; i<1000; i){a[i] -1-i;}printf("%d",strlen(a));return 0; }结果为255 ab以%d的形式打印结果为&#xff1a;300 而c由于unsigned char的取值范…

【CMU15-445 Part-9】Multi-Threaded Index Concurrency Control

Part09-Multi-Threaded Index Concurrency Control 多线程下索引的并发控制 Concurrency Control 强制所有访问数据结构的线程都使用某种协议或者某种方式。并发控制协议的概念&#xff1a;并发控制协议是一种当并发操作作用在一个共享对象上时DBMS用来确保correct的method。…

【杂记】git管理工具的相关应用

这里记录一些用git管理工具进行开发的命令&#xff0c;便于自己查看&#xff0c;我认为下面两篇博客写的很详细&#xff0c;但是为了自己方便查看&#xff0c;所以自己写了一些命令供自己进一步理解。gitee相对git来说更方便一些&#xff08;毕竟国内的不用担心墙&#xff09;&…

JavaEE 网络原理——TCP的工作机制(初篇 包含 UDP 协议的再次阐述)

文章目录 一、再次简述 UDP 协议二、再次简述 TCP 协议三、描述部分 TCP 内部的工作机制1. 确认应答2. 超时重传 前提&#xff1a; 在前面的文章中&#xff0c;我向大家分别简单介绍了 TCP 协议和 UDP 包装一个数据形成数据报发送信息。 除此之外&#xff0c;还通过代码编写了 …

QT中摄像头的使用

QT中摄像头相关类 摄像头的使用 QT中摄像头的使用主要分为三个方面&#xff0c;显示画面、抓取图片和视频录制。这三个方面对应着摄像模块的三种模式。模式如下&#xff1a; ConstantValueDescriptionQCamera::CaptureViewfinder0相机仅配置为显示取景器。QCamera::CaptureSt…