2026年腾讯公司算法工程师面试技巧及测试题解析.docxVIP

  • 1
  • 0
  • 约9.86千字
  • 约 25页
  • 2026-01-27 发布于福建
  • 举报

2026年腾讯公司算法工程师面试技巧及测试题解析.docx

第PAGE页共NUMPAGES页

2026年腾讯公司算法工程师面试技巧及测试题解析

一、编程能力测试(共5题,每题10分,总分50分)

1.(10分)

题目:

实现一个函数,输入一个非负整数`n`,返回`n`的“数字反转”后的结果。假设输入的整数在32位有符号整数范围内,且反转后仍然在32位有符号整数范围内。如果超出范围,返回0。

示例:

输入:`123`→输出:`321`

输入:`-123`→输出:`-321`

输入:`120`→输出:`21`

输入:`1534236469`→输出:`0`(因为反转后`9646324351`超出32位整数范围)

答案:

python

defreverse_integer(n:int)-int:

INT_MAX=231-1

INT_MIN=-231

result=0

sign=-1ifn0else1

n=abs(n)

whilen!=0:

digit=n%10

n=n//10

检查是否溢出

ifresult(INT_MAX-digit)//10:

return0

result=result10+digit

returnsignresult

解析:

-首先处理符号位,将输入的整数转为正数处理,最后再还原符号。

-通过模10和整除10的方式逐位提取数字,并构建反转后的结果。

-在每一步中,检查乘以10后的结果是否会溢出(即`result10+digit`是否超过32位整数范围)。

-时间复杂度:O(logn),空间复杂度:O(1)。

2.(10分)

题目:

给定一个字符串`s`,找到其中不重复的字符的最长子串的长度。例如:

输入:`abcabcbb`→输出:`3`(最长子串为`abc`,`bca`,`cab`等)

输入:`bbbbb`→输出:`1`

输入:`pwwkew`→输出:`3`(最长子串为`wke`)

答案:

python

deflength_of_longest_substring(s:str)-int:

char_set=set()

left=0

max_length=0

forrightinrange(len(s)):

whiles[right]inchar_set:

char_set.remove(s[left])

left+=1

char_set.add(s[right])

max_length=max(max_length,right-left+1)

returnmax_length

解析:

-使用滑动窗口技术,`left`和`right`分别表示子串的左右边界。

-通过哈希集合`char_set`记录当前窗口中的字符,如果遇到重复字符,则移动`left`直到去重。

-时间复杂度:O(n),空间复杂度:O(min(m,n)),其中m为字符集大小(如ASCII为128)。

3.(10分)

题目:

实现一个函数,输入一个字符串`s`,返回其最长回文子串的长度。例如:

输入:`babad`→输出:`3`(最长回文子串为`bab`或`aba`)

输入:`cbbd`→输出:`2`(最长回文子串为`bb`)

答案:

python

deflongest_palindromic_substring(s:str)-int:

ifnots:

return0

start,end=0,0

foriinrange(len(s)):

len1=expand_from_center(s,i,i)#奇数长度回文

len2=expand_from_center(s,i,i+1)#偶数长度回文

max_len=max(len1,len2)

ifmax_lenend-start:

start=i-(max_len-1)//2

end=i+max_len//2

returnend-start+1

defexpand_from_center(s:str,left:int,right:int)-int:

whileleft=0andrightlen(s)ands[left]==s[right]:

left-=1

right+=1

returnright-left-1

解析:

-使用中心扩展法,每个字符(或相邻字符)作为回文的中心,向两边扩展。

-对于每个中心,分别尝试奇数长度和偶数长度的回文。

-记录最大长度的回文

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档