算法训练营day25(补),回溯5

package main

import "sort"

491. 非递减子序列

func findSubsequences(nums []int) [][]int {

  //存储全部集合

  result := make([][]int, 0)

  if len(nums) == 0 {

    return result

  }

  //存储单次集合

  path := make([]int, 0)

  var backtrace func(numList []int, startIndex int)

  backtrace = func(numList []int, startIndex int) {

    if len(path) > 1 {

      temp := make([]int, len(path))

      copy(temp, path)

      result = append(result, temp)

    }

    //记录数组每一个元素是否使用过

    user := make(map[int]bool, len(nums))

    for i := startIndex; i < len(numList); i++ {

      if user[numList[i]] {

        continue

      }

      if len(path) == 0 || numList[i] >= path[len(path)-1] {

        path = append(path, numList[i])

        user[numList[i]] = true

        backtrace(numList, i+1)

        //回溯处理

        path = path[:len(path)-1]

      }

    }

  }

  backtrace(nums, 0)

  return result

}

46. 全排列

func permute(nums []int) [][]int {

  //存储全部集合

  result := make([][]int, 0)

  if len(nums) == 0 {

    return result

  }

  //存储单次集合

  path := make([]int, 0)

  //记录数组每一个元素是否使用过

  user := make(map[int]bool, len(nums))

  var backtrace func(numList []int, user map[int]bool)

  backtrace = func(numList []int, user map[int]bool) {

    if len(path) == len(numList) {

      temp := make([]int, len(path))

      copy(temp, path)

      result = append(result, temp)

    }

    //因为是组合所有元素又要

    for i := 0; i < len(numList); i++ {

      if user[numList[i]] { //已用过的数直接跳过

        continue

      }

      path = append(path, numList[i])

      user[numList[i]] = true

      backtrace(numList, user)

      //回溯处理

      user[numList[i]] = false

      path = path[:len(path)-1]

    }

  }

  backtrace(nums, user)

  return result

}

47. 全排列 II

func permuteUnique(nums []int) [][]int {

  //存储全部集合

  result := make([][]int, 0)

  if len(nums) == 0 {

    return result

  }

  sort.Ints(nums)

  //存储单次集合

  path := make([]int, 0)

  //记录数组每一个元素是否使用过

  user := make(map[int]bool, len(nums))

  var backtrace func(numList []int, user map[int]bool)

  backtrace = func(numList []int, user map[int]bool) {

    if len(path) == len(numList) {

      temp := make([]int, len(path))

      copy(temp, path)

      result = append(result, temp)

    }

    for i := 0; i < len(numList); i++ {

      if i > 0 && numList[i] == numList[i-1] && user[i-1] == false { //过滤重复

        continue

      }

      if user[i] { //已用过的数直接跳过

        continue

      }

      path = append(path, numList[i])

      user[i] = true

      backtrace(numList, user)

      //回溯处理

      user[i] = false

      path = path[:len(path)-1]

    }

  }

  backtrace(nums, user)

  return result

}

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

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

相关文章

【学网攻】 第(28)节 -- OSPF虚链路

系列文章目录 目录 系列文章目录 文章目录 前言 一、什么是OSPF虚链路&#xff1f; 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 扩展 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻…

winprop二次开发

winprop二次开发 前言工具1——整合多个天线结果用途代码实现 工具2——wallman辅助工具需求代码实现 前言 工作需求&#xff0c;对该软件进行简单地二次开发&#xff0c;都是一些挺简单的代码&#xff0c;单纯是为了上传之后将其从本地删除 工具1——整合多个天线结果 用途…

鲁南制药“健康幸福中国年”主题航班,开启探寻健康与幸福的旅程

“小年&#xff0c;小年&#xff0c;过了今天就是年。”提到过年&#xff0c;北方人的“过年”是从腊月二十三的“小年”开始的&#xff0c;而南方地区是在明天。虽然时间不同&#xff0c;但是浓浓的年味是一样的&#xff0c;红彤彤是主色调&#xff0c;喜洋洋是主乐曲&#xf…

C语言:内存分配---栈区、堆区、全局区、常量区和代码区

一、C语言内存分区 C语言内存分区示意图如下&#xff1a; 1. 栈区 栈区介绍 栈区由编译器自动分配释放&#xff0c;由操作系统自动管理&#xff0c;无须手动管理。栈区上的内容只在函数范围内存在&#xff0c;当函数运行结束&#xff0c;这些内容也会自动被销毁。栈区按内存…

Pandas Dataframe 的学习笔记

Pandas Dataframe 的学习笔记 0. Pandas 简介1. 为什么要用 Pandas&#xff1f;2. Series3. DataFrame3-1. 创建 DataFrame3-2. 选择数据3-3. 数据过滤3-4. 修改 DataFrame3-5. 数据清洗3-6. 数据合并3-7. info()3-8. head()3-9. tail()3-10. fillna() 0. Pandas 简介 想象一下…

C# 随机打乱数组

Fisher-Yates 洗牌算法是一种高效地将有限序列的元素进行随机洗牌的算法。这个算法在本地进行&#xff0c;不需要额外的内存开销。其基本思想是从最后一个元素开始&#xff0c;每次从未被选中的元素中随机选择一个与当前位置的元素交换&#xff0c;直到到达序列的开始。 这个算…

数据分析 — Pandas 数据处理

目录 一、简介1、概念2、特点3、引用 二、数据结构1、Series2、DataFrame 三、常见操作1、数据合并2、数据删除3、创建多层索引4、数据对齐5、排序6、DataFrame 和 Series 之间的运算 四、应用 一、简介 1、概念 Pandas&#xff08;Python Data Analysis Library&#xff09;…

前端秘法进阶篇之事件循环

目录 一.浏览器的进程模型 1.进程 2.线程 二.浏览器的进程和线程 1. 浏览器进程 2. 网络进程 3. 渲染进程 三.渲染主线程 四.异步 五.优先级 1. 延时队列&#xff1a; 2.交互队列&#xff1a; 3.微队列&#xff1a; 六.JS 的事件循环 附加:JS 中的计时器能做到精…

java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 宠物在线商城系统是一套完善的java web信息管理系统 servletdaobean mvc模式&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

性能测试监控指标及分析调优

目录 一、哪些因素会成为系统的瓶颈&#xff1f; 1.1 CPU 1.2 内存 1.3 磁盘 I/O 1.4 网络 1.5 数据库 二、哪些指标做为衡量系统的性能 2.1 TPS 吞吐量 2.1.1 磁盘吞吐量 2.1.2 网络吞吐量 2.2 资源使用率 2.2.1 CPU 使用率 2.2.2 内存使用率 2.2.3 磁盘 I/O …

10.什么是 JavaScript 中的包装类型

在 JavaScript 中&#xff0c;基本类型是没有属性和方法的&#xff0c;但是为了便于操作基本类型的值&#xff0c;在调用基本类型的属性或方法时 JavaScript 会在后台隐式地将基本类型的值转换为对象&#xff0c;如&#xff1a; const a "abc"; a.length; // 3 a.t…

open ai api 国内配置代理指南(网上最全)

1.配置须知 open ai 作为这一波AI浪潮的推动者&#xff0c;opne ai的gpt 系列产品在使用和体验上绝对是最强大的&#xff0c;现在对于开发者来说要在代码中访问open ai api是不可用的。所以本文就主要解决这个问题。我们要了解open ai 的网站gpt的访问和api的访问收费是分开来…

配置Juniper虚墙vSRX基于策略的IPsec VPN(WEB方式)

正文共&#xff1a;1444 字 18 图&#xff0c;预估阅读时间&#xff1a;2 分钟 关于IPsec VPN&#xff0c;我们已经有一个合集了&#xff08;IPsec VPN&#xff09;。之前接触比较多的是H3C的IPsec VPN&#xff0c;后来接触的厂家多了&#xff0c;才发现大家的模型或者叫法还是…

数据卷的常见命令,如何创建Nginx容器,修改nginx容器内的html目录下的index.html文件

数据卷 什么是数据卷 数据卷&#xff08;volume&#xff09;是一个虚拟目录&#xff0c;是容器内目录与宿主机**目录**之间映射的桥梁。 以Nginx为例&#xff0c;我们知道Nginx中有两个关键的目录&#xff1a; html&#xff1a;放置一些静态资源 conf&#xff1a;放置配置文…

文心一言4.0 VS ChatGPT4.0哪家强?!每月60块的文心一言4.0值得开吗?

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

Python在手机芯片

Python在手机芯片的智能化芯片研发开发中具有重要性。首先&#xff0c;Python作为一种高级编程语言&#xff0c;具有简洁、易读、易写的特点&#xff0c;使得芯片开发人员能够更加快速地编写和调试代码。这对于芯片研发过程中的迭代和优化至关重要。 其次&#xff0c;Python拥…

微服务设计:Spring Cloud 链路追踪概述

Spring Cloud 链路追踪是指在分布式系统中追踪请求路径的技术。它可以帮助开发者了解请求在各个微服务之间是如何流转的&#xff0c;以及每个微服务处理请求所花费的时间。链路追踪可以用于解决以下问题&#xff1a; 性能分析: 识别性能瓶颈&#xff0c;优化微服务性能。故障排…

AI短视频一键换脸小程序源码/带流量主

微信云开发AI一键视频换脸小程序源码是由极客二改后发布的&#xff0c;小程序增加了广告控制&#xff0c;插屏广告&#xff0c;激励广告和原生广告&#xff0c;由于采用了微信云开发没有后台&#xff0c;所以不需要域名和服务器也可以正常搭建使用&#xff0c;所有的配置都可以…

C++,stl,函数对象,谓词,内建函数对象

目录 1.函数对象使用 2.谓词 1.一元谓词 2.二元谓词 3.内建函数对象 1.算术仿函数 2.关系仿函数 3.逻辑仿函数 1.函数对象使用 #include<bits/stdc.h> using namespace std;class add { public:int operator()(int v1,int v2){return v1 v2;} };class print { p…

comfyui视频转绘学习笔记

算法方案 ComfyUIAnimateDiffcontrolnet 目录 依赖项&#xff1a; 楚门的ai世界 森森star AI_空杯心_47 依赖项&#xff1a; AnimateDiff for ComfyUI 需要去github下载模型 ComfyUI-Impact-Pack git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack.git htt…