首页 > 其他分享 >permutations and combinations in js All In One

permutations and combinations in js All In One

时间:2024-04-30 12:11:42浏览次数:18  
标签:arr const ++ permutations js length arrs combinations let

permutations and combinations in js All In One

js 中的排列组合

概念

排列
组合

demos

/* 

permutations & combinations
排列 & 组合

https://leetcode.com/problems/3sum/

给定一个数字数组,找出有三个元素为一组构成的所有不重复的子数字数组!
*/

// const arr  = [1,2,3]
const arr  = [1,2,3,4,5]

const arrs = [];
const map = new Map();

for (let i = 0; i < [arr.length - 2]; i++) {
  for (let j = i + 1; j < [arr.length - 1]; j++) {
    for (let k = i + 2; k < arr.length; k++) {
      const value = [arr[i], arr[j], arr[k]];
      const key = value.sort((a, b) => a - b > 0 ? 1 : -1).join('');
      // 排序,序列化,去除重复组合,如 134 & 143
      if(!map.has(key)) {
        map.set(key, [...map.get(key), value]);
        // map.set(key, value);
        if(j !== k) {
          // 去除重复数字,如 133
          arrs.push(value);
        }
      }
    }
  }
}

console.log(`arrs =`, arrs)

/* 

$ node ./permutations.js
arrs = [
  [ 1, 2, 3 ], [ 1, 2, 4 ],
  [ 1, 2, 5 ], [ 1, 3, 4 ],
  [ 1, 3, 5 ], [ 1, 4, 5 ],
  [ 2, 3, 4 ], [ 2, 3, 5 ],
  [ 2, 4, 5 ], [ 3, 4, 5 ]
]

*/


// // const arr  = [1,2,3]
// const arr  = [1,2,3,4,5]

// const arrs = [];

// for (let i = 0; i < [arr.length - 2]; i++) {
//   for (let j = i + 1; j < [arr.length - 1]; j++) {
//     for (let k = i + 2; k < arr.length; k++) {
//       let f = arr[i];
//       let s = arr[j];
//       let t = arr[k];
//       // console.log(`[f,s,t] =`, [f,s,t], `?`, f,s,t)
//       // arrs.push([f,s,t]);
//       if(s !== t) {
//         arrs.push([f,s,t]);
//       }
//     }
//   }
// }

// console.log(`arrs =`, arrs)

image

(

标签:arr,const,++,permutations,js,length,arrs,combinations,let
From: https://www.cnblogs.com/xgqfrms/p/18167803

相关文章

  • js逆向实战之集思录登录参数加密解析
    url:https://www.jisilu.cn/account/login/分析过程输入用户名和密码,抓包。(因为是测试,输入的账号和密码都是123456)可以看到用户名和密码都被加密了,且是被同一种加密算法加密的。搜索关键词user_name,有很多条记录。一个一个看,很快就可以确定加密的位置。打断点,重新......
  • SpringBoot的JSR303校验
    关于JSRJSR是JavaSpecificationRequests的缩写,意思是Java规范提案。是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。关于JSR-303JSR-303是JAVAEE6中的一......
  • Babel与core-js
    1.Babel是把ES6的语法转成ES5比如:const、箭头函数、...(结构)、模板字符串等等Babel原理转译分为三阶段:解析(Parse),将代码解析⽣成抽象语法树AST,也就是词法分析与语法分析的过程转换(Transform),对语法树进⾏变换方面的⼀系列操作。通过babel-traverse,进⾏遍历并作添加、更新、......
  • vue.js 3 初学经验:开发环境搭建,Windows,nginx
    Windows11nginx-1.20.0"vue":"^3.4.21"--- 序章vue3开发,不需要后端服务业是可以的。在需要后端服务时,使用nginx来转发请求是很好的(个人开发者)。 注,还有什么其它方式吗?注,本文的后端服务是使用Java开发的HTTP接口。注,参考资料#2介绍了多个vue.js3.0项目......
  • 给Qt搭建一个简单的Json服务器用于软件调试
    一.vscode+nodejs+npm安装二.nodejs服务器开启打开vscode-终端-新建终端进入json_server目录cdD:\json_server运行启动命令,启动json-server服务器npmrunjson:server效果如下:PSD:\json_server>npmrunjson:server>[email protected]:se......
  • html-docx-js 导出word
    1:列表页面按钮<el-buttontype="warning"plainicon="el-icon-download"size="mini"@click="exportWorddata">导出word</el-button> <......
  • 视野修炼-技术周刊第82期 | Node.js v22
    欢迎来到第82期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • JS代码混淆
    开源代码混淆加密JJEncodeAAEncodeJSFuckhttps://www.sojson.com/ 首先拿一段示例代码functionaa(){console.log('123');}aa();控制台中输出会显示123。 aaencode加密结果゚ω゚ノ=/`m´)ノ~┻━┻//*´∇`sojson.com*/['_'];o=(゚ー゚)=_=3;c=(゚Θ゚)=(゚ー゚)-(゚ー゚);......
  • Nuxt2项目Js文件使用Vuex
    背景当前项目是Nuxt2框架,建立了Vuex仓库。通过返回一个函数的形式,建立Vuex代码如下importVuefrom'vue'importVuexfrom'vuex'Vue.use(Vuex)conststore=()=> newVuex.Store({ state:{ name:'abc' }, mutations:{ setName(state,data){ ......
  • js 链式调用
    functionarrany(name){lettasks=[]tasks.push(()=>{console.log(name)})functionwait(duration){tasks.push(()=>newPromise(resolve=>{setTimeout(resolve,duration)}))returnthis}functionexecute(......