算法汇总

335 阅读1分钟

大数相加之和

笛卡尔积

冒泡排序与选择排序的区别

冒泡排序优化

选择排序

插入排序

快速排序

六种排序算法的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/…