【就业】一个笔试题目:括号匹配有效性判断(考点 stack栈)

一个笔试题目:括号匹配有效性判断(考点 stack栈)

  • 【就业】一个笔试题目:括号匹配有效性判断(考点 stack栈)
    • 1. 流程:
    • 2. 笔试题
      • 2.1. 题目如下:
      • 2.2. 代码如下(笔试之后已经调通了):
        • 2.2.1. 方法一:用栈stack配对实现, 时间复杂度 O(N),空间复杂度O(N)
        • 2.2.2. 方法二:利用括号配对有效的特点,用字符串方式实现。
    • 3. 腾讯文档使用方法 docs.qq.com/desktop
    • 4. 有用请点赞,谢谢!
      • 1. 点赞,积分+1
      • 2. 评论,积分+1

【就业】一个笔试题目:括号匹配有效性判断(考点 stack栈)

时间:2020年03月16日四点半到五点半

1. 流程:

大约一个星期前投递的简历。

今天(非HR)打电话过来问,是否方便面试。”方便"。

全程一分钟电话联系,加微信之后,语音面试半小时+笔试半小时,共五十多分钟。

要求自我介绍,项目经历,与深度学习相关的项目经历,FPN,NMS,框架。然后问是否有电脑,做一道笔试题目。

做题流程:发过来一个腾讯网页共享文档链接,对方可以直接看见我写代码的过程,同时微信语音。

写代码的过程中,需要相互交流,我直接说出了题目考点是后,代码写的有点卡壳,对方提示了关于栈的如下方法。

stack(栈)

.push()  
.pop()   
.top()   
.empty()  

特别在之处:

  1. 刚开始让用C++ 写代码…… 我说,不是很熟悉cpp,问能不能用python。他说,”可以"。
  2. 你写ROS,不熟悉cpp??? 我说组里的博士后在用cpp写ROS,其实我该说,我是用python写ROS的。
  3. 你用docker!!!,问了镜像和容器。
  4. 你的课题的优点在工业界好像不需要…… 我说”对“……

他问我,有没有什么需要问题的,我问了。

  • 如果要我,什么时间能去实习。”都可以“
  • 去组里,业务方向是什么。“广告图片相关”
  • 每周实习几天。“5天”

想不出其他问题后,友好道别。

2. 笔试题

一个题。

2.1. 题目如下:

  1. 题目:第1题:括号匹配:[[{([][[][]))()],判断字符串的合法性,匹配返回true,否则返回false。请用C++/python实现
  2. 测试用例: {{{[[[(([])[][][])]]]}}}
  • 代码是直接在发过来的链接(腾讯文档)里写的,无补全功能,tab默认4空格,有单词彩色高亮,不能debug,不能自动检测语法错误。
  • 我试着用栈想了一下,感觉有点复杂,就用了下面的方法二实现了,这显然不是别人想要的方法,我就继续用栈(方法一)写了一遍

2.2. 代码如下(笔试之后已经调通了):

两个代码都测试跑通了。

2.2.1. 方法一:用栈stack配对实现, 时间复杂度 O(N),空间复杂度O(N)

stack(栈) 相对于 a = [] (用python的list实现)

.push() 等效于 a.append()
.pop() 等效于 a.pop(-1) # 这里的-1 可以省略
.top() 等效于 a[-1]
.empty() 等效于 not len(a)

def function(in_char):
   map_2 = {"]":"[", 
            "}":"{",
            ")":"(" }
   stack = []
   for c in in_char:
       if  c in map_2: 
           if stack[-1] == map_2[c] : 
               stack.pop(-1)
           else:
               return False
       else:
           stack.append(c)
   return not len(stack)    

2.2.2. 方法二:利用括号配对有效的特点,用字符串方式实现。

时间复杂度 应该和最快查找的时间复杂度相同:O(NlogN)

空间复杂度:O(N) 用于存放新的字符串。如果字符串中链表时间的话,就不用开辟新的空间来存放数据,空间复杂度就是O(1)。

下面的代码测试了,跑通了。

def function(in_char):
    len_old = 0
    len_new = 1
    while len_old != len_new:
        len_old = len(in_char)
        in_char = in_char.replace("[]", "").replace("{}", "").replace("()", "")
        len_new = len(in_char)
    return not len_new

3. 腾讯文档使用方法 docs.qq.com/desktop

之前偶尔用,今天ubuntu上用了,比较流畅。

腾讯文档记录代码步骤:

  1. 打开链接:[https://docs.qq.com/desktop]
    (https://docs.qq.com/desktop)
  2. 新建 在线文档
  3. 插入 代码块
  4. 选择语言 python,文档就有语法高亮功能了。

4. 有用请点赞,谢谢!

1. 点赞,积分+1

2. 评论,积分+1

你可能感兴趣的:(就业)