大数相加之和
笛卡尔积
冒泡排序与选择排序的区别
冒泡排序优化
选择排序
插入排序
快速排序
六种排序算法的JavaScript实现以及总结
单向链表输出倒数第 K 个元素
JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序
JavaScript 数据结构与算法之美 - 归并排序、快速排序、希尔排序、堆排序
二分查找
台阶问题(斐波那契)
取牌顺序,还原
答案
function solution(arr) {
if(arr.length < 0) return;
if(arr.length < 2) return arr;
let newArr = [];
// console.log(arr);
// 取牌顺序
while(arr.length) {
newArr.push(arr[0]);
arr.splice(0, 1)
if(arr.length > 1) {
let temp = arr.splice(0, 1)
arr = arr.concat(temp);
}
}
// 还原顺序
let list = [];
list.unshift(newArr.splice(newArr.length-1, 1)[0]);
while(newArr.length) {
list.unshift(list.splice(list.length-1, 1)[0]);
list.unshift(newArr.splice(newArr.length-1, 1)[0]);
console.log(list, '====')
}
console.log(list, '====')
}
solution([1,2,3,4,5])
拓扑排序
参考答案
// var input = {"A":["B","C"],"B":["D","C","F"],"C":["E"],"D":[],"E":["D"],"F":["E","C"]};
let list = [ { id: 4, deps: [1] }, { id: 3, deps: [2] }, { id: 2, deps:[] }, { id: 1, deps: [2, 3]} ];
let arr = new Array();
let obj = {}
for(let i=0; i<list.length; i++) {
obj[list[i].id] = list[i]
if(list[i].deps.length === 0) {
arr.push(list[i]);
list.splice(i,1);
}
}
while(list.length) {
for(let j=0; j<list.length; j++) {
let deps = list[j].deps
console.log(deps, arr[arr.length - 1].id)
for(let k=0; k<deps.length; k++) {
if(deps[k] === arr[arr.length - 1].id) {
arr.push(list[j]);
list.splice(j, 1)
j--;
}
}
}
}
console.log(obj)
console.log(arr)
js中的栈、堆、队列、内存空间
JavaScript判断字符串是否为回文
数组操作:排序 去重 合并 (并集 交集 差集(set))
快速排序(手写快排,时间复杂度,优化)
JavaScript的sort方法内部使用的什么排序
JavaScript中数据结构与算法汇总
面试题汇总: www.cnblogs.com/djw12333/p/…