腾讯研发工程师面试攻略及答案.docxVIP

  • 0
  • 0
  • 约8.35千字
  • 约 22页
  • 2026-02-05 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年腾讯研发工程师面试攻略及答案

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

1.题目(6分):

编写一个函数,实现将一个字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。不使用内置的`swapcase()`方法。

答案:

python

defswap_case(s:str)-str:

result=[]

forcharins:

ifa=char=z:

result.append(char.upper())

elifA=char=Z:

result.append(char.lower())

else:

result.append(char)

return.join(result)

示例

print(swap_case(HelloWorld!))#输出:hELLOwORLD!

解析:

通过遍历字符串的每个字符,判断其是否为小写字母(`a=char=z`)或大写字母(`A=char=Z`),并分别进行大小写转换。其他字符保持不变。时间复杂度为O(n),空间复杂度为O(n)。

2.题目(6分):

实现一个`LRU缓存`(LeastRecentlyUsedCache),支持`get`和`put`操作。缓存容量为固定值。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)=self.capacity:

oldest_key=self.order.pop(0)

delself.cache[oldest_key]

self.cache[key]=value

self.order.append(key)

示例

lru=LRUCache(2)

lru.put(1,1)

lru.put(2,2)

print(lru.get(1))#输出:1

lru.put(3,3)#去除键2

print(lru.get(2))#输出:-1

解析:

使用哈希表`cache`存储键值对,维护一个列表`order`记录访问顺序。`get`操作时,将访问的键移动到`order`末尾;`put`操作时,若键已存在则更新值并移动位置,若超出容量则删除最久未使用的键。

3.题目(6分):

给定一个数组,返回其中所有唯一且出现次数为奇数的元素。

答案:

python

deffind_odd_occurrences(arr:list)-list:

fromcollectionsimportCounter

count=Counter(arr)

return[numfornum,freqincount.items()iffreq%2==1]

示例

print(find_odd_occurrences([1,2,3,2,3,1,3]))#输出:[1,3]

解析:

使用`collections.Counter`统计数组中每个元素的出现次数,然后筛选出现次数为奇数的元素。时间复杂度为O(n),空间复杂度为O(n)。

4.题目(6分):

实现一个函数,判断一个二叉树是否是平衡二叉树(左右子树高度差不超过1)。

答案:

python

classTreeNode:

def__init__(self,val=0,left=None,right=None):

self.val=val

self.left=left

self.right=right

defis_balanced(root:TreeNode)-bool:

defcheck_height(node:TreeNode)-int:

ifnotnode:

return0

left_height=check_height(node.left)

ifleft_height==

文档评论(0)

1亿VIP精品文档

相关文档