首页 > 其他分享 >没有重复数字的全排列-js

没有重复数字的全排列-js

时间:2023-01-18 21:34:27浏览次数:41  
标签:use 排列 nums 重复 res dfs js depth path

题目描述

全排列,传入数字
输出所有可能出现的情况

思路分析

经典回溯法例题 采用闭包的方式记录总的结果(可以访问外部变量),记录每一层的结果,记录当前的深度,用记事本记录元素是否遍历过 递归退出条件

代码参考

const permute = (nums) => {
  // 所有的结果
  const res = []
  // 一次的数据 
  const path = []
  // 该位置的数字之前是否访问过,默认为0表示未访问过
  let use = new Array(nums.length).fill(0)
  // 遍历的深度
  let depth = 0
  const dfs = () => {
    // 递归退出条件,如果深度等于数组长度,则说明已经遍历到树的叶子节点
    if (depth === nums.length) {
      res.push([...path])
      return
    }
    // 遍历数组
    for (let i = 0; i < nums.length; i++) {
      // 判断当前元素是否使用过,如果用过则跳出
      if (use[i]) {
        continue
      }
      path.push(nums[i])
      depth++
      use[i] = 1
      // dfs(nums, depth, use, path, res)
      dfs()
      use[i] = 0
      depth--
      path.pop()
    }
  }
  dfs()
  return res
}

标签:use,排列,nums,重复,res,dfs,js,depth,path
From: https://www.cnblogs.com/zx529/p/17060604.html

相关文章

  • nodejs 导出excel
    window.export=function(){layer.msg(MOD_PAGE_PATH+'/export');window.location=MOD_PAGE_PATH+'/export'......
  • 字符串全排列-js
    题目描述思路分析对于全排列类型的题我们都可以按照之前的思路去做,(全排列)。采用回溯的方法。这里的字符串我们也可以借助之前的函数,将字符串转为数组即可代码参考co......
  • JS_10_document对象
    js中用来操作HTML文档的对象,通过操作document对象可以对正在运行的代码进行修改。 一、获取HTML标签对象直接获取:1、通过id获取:window(可省).document.getElementB......
  • 《Vue.js 设计与实现》读书笔记 - 第 4 章、响应系统的作用与实现
    第4章、响应系统的作用与实现4.1响应式数据与副作用副作用函数就是会对外部造成影响的函数,比如修改了全局变量。响应式:修改了某个值的时候,某个会读取该值的副作用函......
  • JSON传递bool类型数据的处理方式
    ajax中使用json传递数据时,其它数据类型都不是问题,但是如果服务器端生成的JSON中有bool类型的数据时,到客户端解析时出现了小小的问题,总结如下:服务器返回的JSON为:{"TypeID":[......
  • 利用数组特性便利json对象中属性
    在使用ajax编程时,有时候服务器端返回的json的属性是不确定的,这样在客户端使用时,就没有办法使用json对象的属性名称来访问属性值。 我们可以将json对象看作是一个字典数组,具......
  • JS 前端大文件上传源码
    ​对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程......
  • 写JS的过程中摁F12发现:Uncaught TypeError: Cannot set properties of null (setting
    在写JavaScript的过程中出现如上图显示的问题,很有可能是onblur前面的类型和你定义的类名不一样,要仔细检查一下你写的类名前后是否一致。......
  • MeterSphere 接口自动化 CSV 整合 JSON 文件
    在 ToB系统的业务场景中,经常有厂家需要将原始JSON数据,用于请求体传参,或者响应体对比等业务场景。对应Metersphere中接口自动化,CSV数据驱动数据包含JSON结构内容,用......
  • 千锋Node.js学习笔记
    千锋Node.js学习笔记目录千锋Node.js学习笔记写在前面1.认识Node.js2.NVM3.NPM4.NRM5.NPX6.模块/包与CommonJS7.常用内置模块1.url2.querystring3.http4.跨域j......