Edward Cui

Results 6 comments of Edward Cui

```javascript var multiply = function(num1, num2) { if(num1 === '0' || num2 ==='0') return '0'; let m = num1.length, n = num2.length; let res = new Array(m+n).fill(0); for(let i =...

function print(n){ setTimeout(console.log(n), Math.floor(Math.random() * 1000)); } for(var i = 0; i < 100; i++){ print(i); }

```javascript var permute = function(nums) { let len = nums.length; if(len === 0) return [[]]; let res = []; let perm = function(arr, p, q, res){ if(p === q){ res.push([...arr])...

题解 1.分析示列,不难发现全排列,首先将每个元素排到第一位。 2.剩余元素再重复第一步操作,依次处理各个元素。 3.通过1,2两步操作,可以利用递归实现操作,但是有个地方需要特别处理,就是对于移动的元素, 在递归操作之前,和之后该如何操作。 4.由此产生两种解决办法,一种是利用回溯,定义回溯状态标识,在递归操作完成后,重置状态 一种是利用swap函数(交换元素位置);相对来说,swap函数更好理解一些; 5.递归函数实现: 递归终止条件: 1.swap 子全排列的数组长度等于nums的长度时,递归终止。 2.dfs 子全排列所在层数(depth)等于nums的长度时,递归终止。 循环数组内部元素: 1.swap 通过swap,将nums[i] 与 p(从0开始)交换 调用递归函数prem,传入 nums, p+1, nums.lenght, res(结果集) 递归内部可以理解为,例如1,2,3 先将1取出,求解剩余2,3 的全排列,依次类推 当递归终止后,再次调用swap函数,将数组重置成原始状态; 2.dfs dfs函数中传入nums,len,depth(当前所在层数),path(存储当前排列结果的动态数组), used(元素是否已存在排列中的布尔标识),...

```javascript /* 题解1(易于理解,但不是最优解) 以[3,6,7,11] 堆为例, 1.假设1小时吃1根,则总时间是 3/1 + 6/1 + 7/1 + 11/1 = 27 2.假设1小时吃2根,则总时间是 3/2 + 6/2 + 7/2 + 11/2 => 2(向上取整) + 3 + 4 +...

```javascript var countSubstrings = function(s) { let len = s.length; let res = 0; for(let i = 0; i < len; i++){ let str = ''; let revStr = '';...