岗位
UE客户端开发工程师
题目分配
3 道编程题
作答时间
60 分钟
做题感受
- 时间偏紧,3 题一个小时平均 20 分钟一题,而且不准用 IDE。
- 第一题比较简单,利用快排求数组里第 K 个大的数,手撕快排即可(15min,100%)
- 第二题之前没做过,后来发现是 leetcode 原题329. 矩阵中的最长递增路径 - 力扣(LeetCode) 用了 dfs + 记忆矩阵(30min,100%)
- 第三题应该是递归和动态规划都可以(15min,32%)
给你一种编码方式:’a’ -> ‘1’ , ‘b’ -> ‘2’ … ‘z’ -> ‘26’,求给定字符串总共有多少种编码方式。
当时死活不知道哪里错了,后来结束之后到 IDE 上调试了一下就发现1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
int solve(string nums) {
return count(nums);
}
int count(string code)
{
if(code.size()==0)
return 1;
if(code.size()==1)
return 1;
if(code[0]<='2'&&code[1]<='6')
return count(code.substr(1)) + dfs(code.substr(2));
return count(code.substr(1));
}
};code[0]<='2'&&code[1]<='6'这个条件是有问题的,应该是code[0]=='2'&&code[1]<='6' || code[0]=='1',并且还有额外的细节,比如"10"或者"20"只有一种解码方式。以及整体还有很大的性能优化空间。