前端常见算法

  1. 冒泡算法

function bubbleSort(arr) {
  var i = 0;
  var j = 9;
  for (i = 1; i < arr.length; i++) {
    for (j = 0; j < arr.length; j++) {
      var temp = 0;
      if (arr[j] > arr[i]) {
        temp = arr[j];
        arr[j] = arr[i];
        arr[i] = temp;
      }
    }
  }
  return arr;
}
  1. 翻转字符串

思路一: 反向遍历字符串

function reverseString(str) {
  var tmp = "";
  for (var i = str.length - 1; i >= 0; i--) tmp += str[i];
  return tmp;
}

转化成 array 操作

  1. 生成指定长度随机字符串

  2. 随机生成验证码

  1. 数组去重

  1. 数组中最大差值

  1. 生成斐波那些数列

  1. 二分查找法

  1. 实现一个函数, 判断输入是不是回文字符串

  1. 斐波那契

尾递归调用优化

永远只有一个调用记录, 调用函数产生一个调用记录, 最后一步操作 return 把当前函数的计算结果当做参数传递给了下一个自身调用.

  1. 判断是不是回文字符串

  1. 不含重复字符串的最长子串的长度

  1. 有效的括号

这种方式也可以

  1. 删除字符串中的所有相邻重复项

  1. 最小栈

  1. 整数反转

  1. 爬楼梯

可以用动态规划的问题都能用递归 从子问题入手,解决原问题,分两种做法:自顶向下和自底向上 前者对应递归,借助函数调用自己实现,是程序解决问题的方式,它不会记忆解 后者对应 DP,利用迭代将结果存在数组里,从数组 0 位开始顺序往后计算 递归的缺点在于包含重复的子问题,DP 的效率更高

  1. 打家劫舍

    1. 词典中最长的单词

  1. 整数去反

最后更新于

这有帮助吗?