- 0
- 0
- 约8.52千字
- 约 26页
- 2026-01-29 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年游戏开发人员高级面试题参考
一、编程与算法(共5题,总分30分)
1.(6分)
题目:
编写一个函数,实现将一个整数数组中的所有元素反转。例如,输入`[1,2,3,4,5]`,输出`[5,4,3,2,1]`。要求不使用额外的数组空间,原地反转。
答案:
cpp
voidreverseArray(intarr[],intsize){
intleft=0,right=size-1;
while(leftright){
swap(arr[left],arr[right]);
left++;
right--;
}
}
解析:
通过双指针法,从数组两端向中间遍历,交换对称位置的元素,直到`left=right`。时间复杂度O(n),空间复杂度O(1)。
2.(6分)
题目:
给定一个包含重复元素的整数数组,返回所有不重复的三元组`[a,b,c]`,满足`a+b+c=0`。例如,输入`[-1,0,1,2,-1,-4]`,输出`[[-1,-1,2],[-1,0,1]]`。
答案:
cpp
vectorvectorintthreeSum(vectorintnums){
sort(nums.begin(),nums.end());
vectorvectorintres;
intn=nums.size();
for(inti=0;in-2;i++){
if(i0nums[i]==nums[i-1])continue;
intleft=i+1,right=n-1;
while(leftright){
intsum=nums[i]+nums[left]+nums[right];
if(sum==0){
res.push_back({nums[i],nums[left],nums[right]});
while(leftrightnums[left]==nums[left+1])left++;
while(leftrightnums[right]==nums[right-1])right--;
left++;
right--;
}elseif(sum0)left++;
elseright--;
}
}
returnres;
}
解析:
先排序,然后固定一个数,使用双指针遍历剩余部分。跳过重复元素避免重复解。时间复杂度O(n2)。
3.(6分)
题目:
设计一个数据结构,支持以下操作:
-`addWord(word)`:添加一个单词。
-`search(word)`:返回`true`如果`word`是字典中的单词,且可以通过对`word`中的每个字母做字母大小写转换、插入一个字母、删除一个字母或替换一个字母得到字典中的单词。
答案:
cpp
classTrieNode{
public:
unordered_mapchar,TrieNodechildren;
boolisEnd;
TrieNode():isEnd(false){}
};
classMagicDictionary{
private:
TrieNoderoot;
public:
MagicDictionary(){
root=newTrieNode();
}
voidaddWord(stringword){
TrieNodenode=root;
for(charc:word){
if(!node-children[c])node-children[c]=newTrieNode();
node=node-children[c];
}
node-isEnd=true;
}
boolsearchWord(stringword){
returndfs(word,0,root,0);
}
booldfs(stringword,intindex,TrieNodenode,intcount){
if(!node)returncount==1index==word.size();
if(count1)returnfalse;
if(node-isEndcount==1index==word.size())returntrue;
for(inti=index;iword.size();i++)
原创力文档

文档评论(0)