百度自动驾驶实习算法笔经

笔试部分

20 道选择题涵盖 C++ 语言和少量其他语言特性和部分算法细节
编程题:

  1. 谢谢参与题,很容易所以忘了(
  2. 输入一个 01 字符串,找到两个子串其中含有的 0,1 数量相同,最终输出长度最大的两个不同子串的左右边界,例如 “11011” 的输入要输出 1 4 2 5 表示第一个子串从 字符 1 到 4,第二个从 2 到 5;字符串长度范围 [3, 10^6]
    • 第一眼没看懂,先做了第三题再回来看也比较简单;贪心地分别从左右两边找,先确定一个最长地子串且该子串的左右外部邻接字符相同,然后两个串分别往左右拿一个就行
  3. 输入一个 01 字符串,规定一次操作可以将相邻的两个字符中较小者移除,例如 "10" 只能移除 "0" 得到 "1",而 "11" 或 "00" 可以移除其中任意一个,最终输出所有不同的非空子串数目;例子有 "00101" 输出 9 等,字符串长度范围 [1,10^9],结果对 1e9 + 7 取模
    • 最开始想的 dp,没整明白,然后考虑每次遇到 1 就截断统计一次,因为一直遇到 0 只需要记上个数然后乘一下就行;
    • 第一版通过了测试用例和 35% 的全部用例;第二版改完只剩 2 分钟,提交上去没看到结果(哭)

祈祷进面


发出来基德基德

#百度实习##百度##笔试题目#
全部评论
同学请问第二道编程题能更加详细地讲解一下思路吗?
1 回复
分享
发布于 2022-03-24 08:40

相关推荐

点赞 评论 收藏
转发
7 21 评论
分享
牛客网
牛客企业服务