算法类面试题

霸气de小男生 提交于 2019-12-04 08:09:50

1、算法---栈

判断括号成对出现

sdfj(nrg(lj()k)nk)sldjwef          合法

q(wdwf()hknkql(whdq)w)       合法

hk)nqeif)liq(h(flq)wj(              不合法

思路:

  括号存在嵌套关系,也存在并列关系

可以遍历字符串的每一个字符,使用栈来处理:

(1)遇到左括号,把左括号压入栈中

(2)遇到右括号,判断栈是否为空,为空说明没有左括号与之对应,则不合法。如果栈不为空,则移除栈顶的左括号---这对括号抵消了

当遍历结束后,如果栈是空的则合法,否则不合法

 

2、冒泡排序

// 冒泡排序
let arr = [1, 6, 3, 7, 5, 9, 2, 8];
function sort(arr) {
  // 升序
  console.time("冒泡排序耗时")
  let num = null
  for (let i = 0; i < arr.length - 1; i++) {
    // 外层循环的作用是:每次循环找出一个最大数放在这个数组的最后面
    for (let j = 0; j < arr.length - i - 1; j++) {
      // 内层循环的作用是:比较相邻两个数的大小从而进行交换位置
      // 借助一个中间容器交换位置
      if (arr[j] > arr[j + 1]) {
        num = arr[j]
        arr[j] = arr[j + 1]
        arr[j + 1] = num
      }
    }
  }
  console.log(arr)
  console.timeEnd("冒泡排序耗时")
}
sort(arr)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!