3-7 思考题 请老师斧正

来源:3-7 【勤于思考,夯实学习成果】阶段思考题

less_is_better

2021-06-06

// 1.请用 ES6 的 class,封装一个 Stack 类,包括 push、pop、peek 方法。
class Stack {
  constructor () {
    this.stack = []
  }
  push (item) {
    this.stack = [...this.stack, item]
    return this.stack
  }
  pop () {
    if(!this.stack.length) {return undefined}

    const res = this.stack[this.stack.length-1]
    this.length.length -= 1
    return res
  }
  peek () {
    if(!this.stack.length) {return undefined}
    
    return this.stack[this.stack.length-1]
  }
}




// 2.请用栈这个数据结构,将 100 这个十进制数字转为二进制

const bin = (num) => {
  const stack = []
  const res = []
  while (num > 0) {
    stack.push(num % 2)
    num = Math.floor(num / 2)
  }
  const len = stack.length
  // 注意不能写成 for (let i = 0; i < stack.length; i +=1) ,在循环中随着 stack.pop() 的执行,stack.length 的值会不断变化。
  for (let i = 0; i < len; i +=1) {
    res.push(stack.pop())
  }
  // 或可写成:
  // for (let i = stack.length-1; i > -1; i -=1) {
  //   res.push(stack[i])
  // }
 
  return res
}

写回答

1回答

lewis

2021-06-06

pop不用那么麻烦,直接调用array的pop即可

0
1
less_is_better
好的。多谢老师
2021-06-06
共1条回复

JavaScript版数据结构与算法 轻松解决前端算法面试

夯实算法基础,填补技术短板,助力面试考题最后一公里

2479 学习 · 683 问题

查看课程