代码随想录算法训练营第25天| 491.递增子序列、46.全排列、47.全排列 II

news/2024/9/21 22:14:17 标签: 算法, python

文章目录

  • 491.递增子序列
  • 46.全排列
  • 47.全排列 II

491.递增子序列

leetcode 491.递增子序列
代码随想录

python">class Solution:
    def __init__(self):
        self.pathSet = set()
    def backtracing(self, nums, res, path, startIndex, used):
        if len(path) >= 2:
            temp = tuple(path)
            if temp not in self.pathSet:
                self.pathSet.add(temp)
                res.append(path[:])
        if startIndex >= len(nums):
            return
        for i in range(startIndex, len(nums)):
            if len(path) == 0:
                path.append(nums[i])
            else:
                if nums[i] >= path[-1]:
                    path.append(nums[i])
                else:
                    continue
            # if i > startIndex and nums[i] == nums[i-1] and not used[i]:
            #     continue
            used[i] == True
            self.backtracing(nums, res, path, i+1, used)
            used[i] == False
            path.pop()
    def findSubsequences(self, nums: List[int]) -> List[List[int]]:
        # 是序列本身存不存在递增(不能对其进行排序)
        # 如何判断递增,当前的元素比path里面的元素大(等)就行了
        # 现在可以找出所有的了,接下来需要去重(还是同一层不可以),但很难判断,它本身不是递增数组hhh(所以就改用set去重了)
        res = []
        used = [False] * len(nums)
        self.backtracing(nums, res, [], 0, used)
        return res

46.全排列

leetcode 46.全排列
代码随想录

python">class Solution:
    def backtracing(self, nums, res, path, used):
        if len(path) == len(nums):
            res.append(path[:])
            return
        for i in range(0, len(nums)):
            if used[i]:
                continue
            path.append(nums[i])
            used[i] = True
            self.backtracing(nums, res, path, used)
            used[i] = False
            path.pop()
    def permute(self, nums: List[int]) -> List[List[int]]:
        res = []
        used = [False] * len(nums)
        self.backtracing(nums, res, [], used)
        return res

47.全排列 II

leetcode 47.全排列 II
代码随想录

python">class Solution:
    def __init__(self):
        self.pathSet = set()
    def backtracking(self, nums, res, path, used):
        if len(path) == len(nums):
            temp = tuple(path)
            if temp not in self.pathSet:
                self.pathSet.add(temp)
                res.append(path[:])
        for i in range(len(nums)):
            if used[i]:
                continue
            if i > 0 and nums[i] == nums[i-1] and not used[i-1]: # 排好序的之后就可以用这个
                continue
            path.append(nums[i])
            used[i] = True
            self.backtracking(nums, res, path, used)
            used[i] = False
            path.pop()
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        res = []
        used = [False] * len(nums)
        self.backtracking(nums, res, [], used)
        return res

http://www.niftyadmin.cn/n/5669544.html

相关文章

GRU是门控循环单元是什么?

GRU是门控循环单元(Gated Recurrent Unit)的简称,它是循环神经网络(RNN)的一种变体。GRU旨在解决传统RNN中存在的长期依赖问题和反向传播中的梯度消失或梯度爆炸问题。与另一种流行的RNN变体LSTM(长短期记忆…

【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理

主要内容如下: 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、ChangeStar模型训练与预测 4、Onnx运行及可视化 运行环境:Python3.8,torch1.12.0cu113,onnxruntime-gpu1.12.0 likyoo变化检测源码:https://github.c…

设计模式-行为型模式-解释器模式

1.解释器模式定义 用于定义语言的语法规则表示,并提供解释器来处理句子中的语法; 1.1 解释器模式的优缺点 优点 易于修改、扩展,因为在解释器模式中使用类来表示语言的文法规则,因此就可以通过继承等机制改变或者扩展文法&…

docker zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888

下面几点需要注意的: 1、确认在每个$zookeeper_home/data/myid中有对应数字 2、是否关闭防火墙:systemctl stop firewalld,systemctl disable firewalld 3、zoo.cfg中的server需要写成以下形式的: 假如有两台机器,1…

python获取滑块验证码需要滑动的距离

我们以这个网站为例: http://120.86.191.138/hbgs/zwgk/dirData.do?dirId402881204e959150014e959f42f30014&subjectId93e889f2501d3fe8015024305bdf0efc 往后点到第四页后会出现验证码 一.获取到背景图片和缺口图片 我们发现图片是base64格式通过API直接发送 二.识别缺…

2024.9.20 Python模式识别新国大EE5907,PCA主成分分析,LDA线性判别分析,GMM聚类分类,SVM支持向量机

1.PCA 主成分分析用于特征提取、可视化和分类 根据要求,我在第一个代码框中完成了从指定路径提取图像数据,将其转换为灰度图像并将其展平。在这里,我将数字 88 设置为我的照片的标签,然后将所有 10 张照片传入代码。然后我定义了…

[模板]树的最长路径

[模板]树的最长路径 题目描述 给定一棵树,树中包含 n 个结点(编号1~n)和 n-1 条无向边,每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说,要找到一条路径,使得使得路径两端的点的距离最远…

百易云资产管理运营系统 ticket.edit.php SQL注入漏洞复现

0x01 产品简介 百易云资产管理运营系统,是专门针对企业不动产资产管理和运营需求而设计的一套综合解决方案。该系统能够覆盖资产的全生命周期管理,包括资产的登记、盘点、评估、处置等多个环节,同时提供强大的运营分析功能,帮助企业优化资产配置,提升运营效率。 0x02 漏…