2022.03.04 OPPO C++笔试
若干选择填空题,考得比较细,有点难度
算法题:(总体来说很简单)
-
随机生成一个若干长度的字符串msg,比如"adEsaowOPdppYyoes",仅包含大小写字母,请问msg中的字符可以组成多少个"oppoyes"字符串,另外每个大写字母可以当成两次小写字母使用。示例:
输入:"OPPOYES",输出:2
输入:"oPoyes",输出:1
输入:"oppoye",输出:0
我的解答:ac 100%。用哈希表记录就好了,细节要注意,前面一直只通过50%用例。检查了很久代码才找到问题。需要一开始主动 把"oppoyes"里面的7个字符作为键放入哈希表,不然后续判断较麻烦。
-
给你一个数组,比如nums,[2, 2, 2, 0, 2]和一个起点begin = 2,从起点出发下一步可以到达
begin + num[begin] 或者 begin - nums[begin],可以循环跳跃,比如到了最左边,就从最右边跳回,
例如这个数组长度为5,begin = 1,往左跳到begin - nums[begin] = 1 - 2 = -1,应该落在下标为4的位置。
求问,若干次后能否调到值为0的点。示例:
输入:[2, 2, 2, 0, 2], 2 输出:true 解释:2 => 4 => 1 => 3
输入:[1, 2, 0, 2], 1 输出:false 解释:无法跳达
我的解答:ac 46%。用了dfs,告诉我超出内存限制了,我的是暴力解法了。后续知道较优解法是bfs加一个bool数组
-
判断是否为漂亮树
我的解答:ac 100%。秒,二叉树的层序遍历。
SHEIN希音公司福利 278人发布
