腾讯游戏开发工程师笔试题目及参考答案.docxVIP

  • 4
  • 0
  • 约6.45千字
  • 约 20页
  • 2026-03-02 发布于福建
  • 举报

腾讯游戏开发工程师笔试题目及参考答案.docx

第PAGE页共NUMPAGES页

2026年腾讯游戏开发工程师笔试题目及参考答案

一、编程基础(共5题,每题6分,共30分)

1.(6分)请编写一段C++代码,实现一个函数`intfindMax(intarr[],intn)`,该函数接收一个整数数组`arr`和其长度`n`,返回数组中的最大值。要求不使用任何标准库函数。

参考答案:

cpp

intfindMax(intarr[],intn){

if(n=0)return-1;//边界处理

intmax=arr[0];

for(inti=1;in;++i){

if(arr[i]max)max=arr[i];

}

returnmax;

}

解析:

初始化最大值为数组首元素,遍历数组其余元素,若当前元素大于已记录的最大值,则更新最大值。时间复杂度为O(n),空间复杂度为O(1)。

2.(6分)请用Python实现一个函数`boolisPalindrome(intx)`,判断一个整数`x`是否为回文数(正读反读相同)。例如,121是回文数,而123不是。

参考答案:

python

defisPalindrome(x):

ifx0or(x%10==0andx!=0):

returnFalse

reverted_number=0

whilexreverted_number:

reverted_number=reverted_number10+x%10

x=x//10

returnx==reverted_numberorx==reverted_number//10

解析:

通过反转后半部分数字,与原数字的前半部分比较。若两者相等或仅最后一位存在差异(如1221和122),则回文。时间复杂度为O(logx),空间复杂度为O(1)。

3.(6分)请用Java实现一个方法`ListStringfizzBuzz(intn)`,返回一个列表,其中:

-数字能被3整除时,添加Fizz;

-能被5整除时,添加Buzz;

-能被3和5整除时,添加FizzBuzz;

-其他情况,添加数字的字符串形式。

参考答案:

java

importjava.util.ArrayList;

importjava.util.List;

publicclassFizzBuzz{

publicListStringfizzBuzz(intn){

ListStringresult=newArrayList();

for(inti=1;i=n;i++){

if(i%15==0){

result.add(FizzBuzz);

}elseif(i%3==0){

result.add(Fizz);

}elseif(i%5==0){

result.add(Buzz);

}else{

result.add(String.valueOf(i));

}

}

returnresult;

}

}

解析:

按规则逐个检查数字,优先级为FizzBuzzFizzBuzz。时间复杂度为O(n),空间复杂度为O(n)。

4.(6分)请用JavaScript实现一个函数`removeDuplicates(arr)`,删除数组`arr`中的重复元素,保留首次出现的顺序。例如,输入`[1,2,2,3,4,4,5]`,输出`[1,2,3,4,5]`。

参考答案:

javascript

functionremoveDuplicates(arr){

constseen=newSet();

constresult=[];

for(constnumofarr){

if(!seen.has(num)){

seen.add(num);

result.push(num);

}

}

returnresult;

}

解析:

使用`Set`记录已出现元素,遍历数组时仅添加未记录的元素。时间复杂度为O(n),空间复杂度为O(n)。

5.(6分)请用C#实现一个方法`intromanToInt(strings)`,将罗马数字字符串`s`转换为整数。例如,III为3,IV为4,MCMXCIV为1994。

参考答案:

csharp

publicintRomanToInt(strings){

Dictionarychar,intromanMap=newDictionarychar,int{

{I,1},{V,5}

文档评论(0)

1亿VIP精品文档

相关文档