面试官:你工作了3年了,这道算法题你都答不出来?

2023年 9月 21日 57.7k 0

9月又是换工作的最佳时机。我幻想着只要换一份工作,就可以离开这个“破碎的地方”,赚更多的钱,做最舒服的事情,但事与愿违。

最近,一名女学生正在换工作。面试前她准备了很多问题。我以为她很有信心,结果却在算法上吃了大亏。

什么样的算法题能让面试官对一个女孩说出这么狠的话:你工作了3年了,这道算法题你都解不出来?

有效括号

这是LeetCode上的一道算法题,旨在考察考生对“栈”数据结构的熟悉程度。我们来看一下。

给定一个仅包含字符‘(‘、‘)’、‘{‘、‘}’、‘[‘和‘]’的字符串 s,确定输入字符串是否有效。

如果满足以下条件,输入字符串有效:开括号必须由相同类型的括号括起来。左括号必须按正确的顺序关闭。

示例1:

Input: s = "()"
Output: true

示例2:

Input: s = "()[]{}"
Output: true

示例3:

Input: s = "(]"
Output: false

示例4:

Input: s = "([)]"
Output: false

实施例5:

Input: s = "{[]}"
Output: true

限制条件:

  • 1 {
    // The empty string character is valid
    if (!s) {
    return true
    }
    const leftToRight = {
    '(': ')',
    '[': ']',
    '{': '}'
    }
    const stack = []
    for (let i = 0, len = s.length; i < len; i++) {
    const ch = s[i]
    // Left parenthesis
    if (leftToRight[ch]) {
    stack.push(ch)
    } else {
    // start matching closing parenthesis
    // 1. If there is no left parenthesis in the stack, directly false
    // 2. There is data but the top element of the stack is not the current closing parenthesis
    if (!stack.length || leftToRight[ stack.pop() ] !== ch) {
    return false
    }
    }
    }
    // Finally check if the stack is empty
    return !stack.length
    }

    虽然暴力方案符合我们的常规思维,但是堆栈结构方案会更加高效。

    最后

    在面试中,算法是否应该成为评价候选人的重要指标,我们不会抱怨,但近年来,几乎每家公司都将算法纳入了前端面试中。为了拿到自己喜欢的offer,复习数据结构、刷题还是有必要的。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论