算法(js语言编写)
个人学习时总结的觉得有趣的算法而已,没有详细步骤和思路。如有疑问可留言或者私信
阿渊啊啊啊啊啊啊啊啊啊啊啊啊
生如浮萍般卑微 爱却苍穹般壮烈
展开
-
/ 1.求最大公约数
// 1.求最大公约数 function getgy(a,b){ let max = Math.max(a,b); let min = Math.min(a,b); dp(max,min); function dp(max,min){ let res = max%min; if(res == 0){ return min; }else{ dp(min,res) } } } getgy(6,9)原创 2021-08-13 16:57:52 · 95 阅读 · 0 评论 -
宽度搜索(走迷宫)
核心: 1.使用队列推入有效的子节点,在寻找到当前节点的子节点后推出当前父节点 2.使用数组记录已经走过的节点,用于判断子节点是否推入 let strArr = [["+","+",".","+"],["+","+","+","+"],["+","+",".","+"],["+",".","0","+"],["+","+","+","."]]; let queen = []; let visited = new Array(10).fill(0).map(i=> {return new A原创 2021-08-07 11:22:51 · 119 阅读 · 0 评论 -
一句话解决的算法
611. 有效三角形的个数 q: 给你一个数组,求能组合出三角形的个数 a: 排序 给每一个最大边寻找另外两个边,n^3解决原创 2021-08-04 16:12:58 · 83 阅读 · 0 评论 -
最长递增子序列个数
let arr = [5,6,7,1,2,8]; let arr_num = new Array(6).fill(1); for(let i=1;i<arr.length;i++){ for(let j=0;j<i;j++){ if(arr[i] > arr[j]){ arr_num[i] = Math.max(arr_num[j] +1 ,arr_num[i] ) ; } } } console.log(arr_num)原创 2021-07-30 17:39:46 · 90 阅读 · 0 评论 -
01背包问题
// 4个物品,背包最多装10 let vs = [0,2,4,3,7]; let ws = [0,2,3,5,5]; let f = new Array(5).fill(0).map(i=> new Array(11).fill(0) ); // f[m][n]:装m个物品背包n最大价值 for(i=1;i<vs.length;i++){ for(j=1;j<11;j++){ if(ws[i] > j ){ f[i][j] =f[i-1][j];..原创 2021-07-30 15:51:52 · 51 阅读 · 0 评论 -
n个数的全排列
let label = 4; let arr = new Array(4).fill(0); let x = 0; let arr_result = new Array(4).fill(0); DFS(0); function DFS(n){ if(n == label){ x++; console.log(x,arr_result) return; } for(let i=0;.原创 2021-07-30 15:16:59 · 117 阅读 · 0 评论