华为OD机考试题分享
先介绍自己的情况,21届985某理毕业应届生,因为二战和考公等规划不明确,导致毕业前没参加校招。
因为是目标院校985,所以被华为OD 德科的HR联系。
机考3道题,前两道简单题(2X100) ,第三道题中等题 (1X200)
总分400,目标院校150以上就过。
简单题和中等题 难度没有多大区别,主要还是看你擅长哪类题目以及什么语言(比如说python大法好导致我第三道题几乎秒AC,但是卡百分之65用例,改了快一个小时还是卡用例)
先提一句,前三道题几乎都是字符串和数组,一般"独立“刷完牛客网华为机考的简单和中等题,过机考应该就没问题了(如果想拿高分还是得掌握高级算法,如图搜索 动态规划)
第一道题:
给定一个固定数组,和一个正整数n, 求该数组的最长子序列之和=n (就是子序列之和=n,然后要最长的)。
没啥好说的,暴力法+栈和动态规划都能做,牛客题库也有类似的最长子序列题目。
我的解题: 直接栈进行暴力法遍历就行了,注意优化的一点就是如果遍历的子序列之和大于n了之后直接continue。
第二道题:
给定一个字符串,字符串内容全是括号 : () {} [] , 字符串在下列情况下为无效字符串直接输出-1 : 1.有没对应的括号存在 即只存在{ 不存在 } 等等 。 还有个无效条件忘了,大概也是括号不匹配。
最后要你输出最大的嵌套深度 (其实就是完整的括号对 套了几层, 比如说 " ({[()]})" 就是4层)
基本上考察: 栈的知识。
我的思路就是:
遍历到左括号比如( [ { 就进栈, 遍历到 右括号 就与栈内索引最大的对应括号出栈,并且记录下栈内还剩多少括号(嵌套深度+1)。
第三道题:
字符串的条件匹配。 给一堆待匹配的字符串str1 和 一个匹配规则字符串(正则表达式)比如说: a.* 输出啥忘了,大概就是输出哪些字符串成功匹配。
python做这题很简单。直接re.search()就能做。
后续面试持续更新