当前位置: 首页 > news >正文

leetcode-47.全排列II

如何在有重复值的时候节省时间是优化重点。

基础写法肯定是按无重复值时的全排列写,在其中要加上防止走重复路径的分支。
能防止的也只有同层,如果同层走一个值,但是该值重复,且走过了,则放弃走该分支。所以设layer_used_num这个set。

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        results = []
        def backtrack(path, path_used_idx):
            if len(path) == len(nums):
                results.append(path[:])
                return
            layer_used_num = set()
            for i in range(0, len(nums)):
                if nums[i] in layer_used_num:
                    continue
                if i in path_used_idx:
                    continue
                layer_used_num.add(nums[i])
                path.append(nums[i])
                path_used_idx.add(i)
                backtrack(path, path_used_idx)
                path.pop()
                path_used_idx.remove(i)
        backtrack([], set())
        return results

相关文章:

  • 深度学习之防止过拟合
  • 【华三】路由器交换机忘记登入密码或super密码的重启操作
  • 打乱一维数组中的元素,并按照4个一组的方式添加到二维数组中
  • Python基础入门掌握(十五)
  • 删除 Git 历史提交记录中的大文件
  • 大数据学习(71)-三范式构成
  • pycharm-python國際象棋遊戲代碼
  • 【程序人生】成功人生架构图(分层模型)
  • 前端面试:ajax 和 xhr 是什么关系?
  • 内网攻防——红日靶场(一)
  • 织梦dedecms管理员密码重置工具下载
  • 深度学习框架PyTorch——从入门到精通(4)数据转换
  • 深入探讨TK矩阵系统:创新的TikTok运营工具
  • Redis 三主三从集群部署的完整方案
  • 华为营销流程落地方案:MTC=MTL+LTC
  • ETL中的实用功能以及数据集成方式
  • go语言中切片的长度和容量详解
  • opencv测量线距算法以及深入理解轮廓、采样点与 `pointPolygonTest` 及其在测量线距中的应用
  • Qt 中 isHidden 和 isVisible 的区别与使用
  • Spring 导入 XML 配置文件:@ImportResource
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 媒体:酒店、民宿临时毁约涨价,怎么管?
  • 国台办:台商台企有信心与国家一起打赢这场关税战
  • 80后共青团云南省委副书记许思思已任迪庆州委副书记
  • “75后”袁达已任国家发改委秘书长
  • 市场监管总局:2024年查办商标、专利等领域违法案件4.4万件