嗨极客们,我已经申请了 2021 年 Google SWE 实习(印度),并且我被选中并被邀请参加 Google 的在线挑战赛
申请:我是通过 LinkedIn 申请的,这真的是一个很好的机会平台,我在 2020 年 8 月 12 日收到了来自 Google 的邮件,这对我来说是一次很棒的经历。
我在这里分享在编码挑战中提出的问题。我希望我会帮助你。
第1轮:
问题 1:数组查询:给定一个长度为 N 的整数数组,您必须对给定的数组执行以下五种类型的查询:
- 左:执行一次循环左旋。
- 右:执行一次循环右旋。
- 更新 Pos 值:更新索引 Pos处的值 Val的数组。
- Increment Pos:将数组的索引 Pos处的值增加 1。
- Pos:在索引 Pos处打印当前值。
考虑到基于 1 的索引执行所有查询。
笔记:
- 一次循环向左旋转将 ( arr 1 , arr 2 , arr 3 , . . , arr N-1 , arr N ) 更改为 ( arr 2 , arr 3 , . . .arr N-1 , arr N , arr 1 )。
- 一次循环向右旋转将(arr 1 , arr 2 , arr 3 , . . , arr N-1 , arr N ) 更改为 (arr N , arr 1 , arr 2 , arr 3 , . . .arr N-1 ) 。
输入格式
- 第一行包含一个整数N,表示数组的长度。
- 第二行包含N 个空格分隔的整数,表示数组的元素。
- 第三行包含一个整数Q,表示查询的数量。
- 接下来, Q行包含所描述的查询类型。
输出格式:对于类型 5 的每个查询,在新行中打印输出。
约束
2 ≤ N ≤ 5 x 105
2 ≤ Q ≤ 5 x 105
1 ≤ Pos ≤ N
0 ≤ arri , Val ≤ 105
保证至少有一个查询是类型5 。
样本输入 1
10
0 3 3 8 0 6 9 3 2 8
10
Increment 3
Increment 1
Left
Increment 5
Left
? 9
Right
示例输出 1
1
9
问题 2:字典中有 N 个单词,每个单词的长度都是固定的 M,并且仅由小写英文字母组成,即 ( ‘a’, ‘b’, ……. ‘z’ )。
Q表示的查询词。M中查询词的长度。这些词包含小写英文字母,但在某些地方而不是’a’,’b’,……之间的字母。 ‘z’ 有 ‘?’ . 请参阅示例输入部分以了解这种情况。
Q 的匹配计数,用match_count(Q)表示,是字典中单词的计数 并且在与查询词Q中的字母相同的位置包含相同的英文字母(不包括可以在?位置的字母)。
换句话说,字典中的单词可以在位置“?”处包含任何字母。但剩余的字母必须与查询词匹配。
给你一个查询词 Q,你需要计算match_count(Q)。
输入格式
- 第一行包含两个空格分隔的整数M和N,分别表示字典中的单词数和每个单词的长度。
- 接下来的N行包含字典中的每个单词。
- 下一行包含一个整数Q表示您必须计算 match_count() 的查询词的数量
- 接下来的Q行每行包含一个查询词。
输出格式
对于每个查询词,在新行中打印特定词的 match_count。
约束
1 ≤ N ≤ 5 x 104
1 ≤ M ≤ 7
1 ≤ Q ≤ 105
样本输入
5 3
cat
map
bat
man
pen
4
?at
ma?
?a?
样本输出
2
2
4
2