1.写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal
function mySetInterval(fn, a, b) { let timer = { id: null }; console.log('timer****', timer) function run(fn, a, b) { console.log('timer88888', timer) timer.id = setTimeout(() => { fn(); console.log('间隔了' + a + 'ms'); run(fn, a + b, b) }, a); } run(fn, a, b); return timer; } function myClear(timeId) { clearTimeout(timeId); } let timer = mySetInterval(() => { console.log('执行啦fn函数') }, 200, 300) console.log('timer', timer); setTimeout(() => { myClear(timer.id); }, 2000);
十大经典排序算法(动图演示)
文章来自www.cnblogs.com/onepixel/ar…
2.合并二维有序数组成一维有序数组,归并排序的思路
let arr1 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 2, 3], [4, 5, 6] ]; let arr2 = [ [1, 4, 6], [7, 8, 10], [2, 6, 9], [3, 7, 13], [1, 5, 12] ]; function merge(left, right) { console.log('left', left); console.log('right', right); let result = []; while (left.length > 0 && right.length > 0) { if (left[0] < right[0]) { result.push(left.shift()); } else { result.push(right.shift()); } } while (left.length > 0) { result.push(left.shift()); } while (right.length > 0) { result.push(right.shift()); } console.log('result', result); return result; } function mergeSort(arr) { console.log('arr', arr); if (arr.length < 2) { return arr; } while (arr.length > 1) { console.log('arr.length', arr.length); let arrayItem1 = arr.shift(); console.log('arr**********', arr); let arrayItem2 = arr.shift(); console.log('arrayItem1', arrayItem1); console.log('arrayItem2', arrayItem2) let mergeArr = merge(arrayItem1, arrayItem2); arr.push(mergeArr); } return arr[0] } console.log(mergeSort(arr1))
3.斐波那契数列
function fibonacci(n) { if (n == 1 || n == 2) { return 1 }; return fibonacci(n - 2) + fibonacci(n - 1); } console.log(fibonacci(3));
4.字符串出现的不重复最长长度
let str = 'abacsjdj'; function checkSting(str) { let arr = str.split(''); console.log(arr) let maxArr = []; let tempArr = []; for (let i = 0; i < arr.length; i++) { if (tempArr.indexOf(arr[i]) > -1) { let sliceNum = Number(tempArr.indexOf(arr[i])) + 1; tempArr = tempArr.slice(sliceNum); tempArr.push(arr[i]); if (tempArr.length > maxArr.length) { maxArr = tempArr; } } else { tempArr.push(arr[i]); if (tempArr.length > maxArr.length) { maxArr = tempArr; } } } console.log('maxArr', maxArr); return maxArr; } checkSting(str);