腾讯技术部门顾问面试技巧与答案详解.docxVIP

  • 0
  • 0
  • 约5.02千字
  • 约 16页
  • 2026-03-12 发布于福建
  • 举报

腾讯技术部门顾问面试技巧与答案详解.docx

第PAGE页共NUMPAGES页

2026年腾讯技术部门顾问面试技巧与答案详解

一、编程与算法题(共5题,每题10分,总分50分)

题目1:

问题描述:

给定一个非空整数数组,返回所有连续子数组的和。要求时间复杂度为O(n)。

示例:

输入:`[1,2,3]`

输出:`[6,6,6,3,2,1]`(即所有连续子数组的和)

要求:

-不能使用递归或动态规划,必须线性时间解决。

-解释代码逻辑并说明优化点。

答案解析:

python

defsubarray_sums(nums):

n=len(nums)

result=[]

foriinrange(n):

total=0

forjinrange(i,n):

total+=nums[j]

result.append(total)

returnresult

示例调用

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

解析:

-双层循环思路:外层遍历起始点,内层遍历终止点,计算所有连续子数组的和。

-时间复杂度:O(n2),但腾讯可能要求O(n),需优化。

-优化方案:使用前缀和技巧。

python

defsubarray_sums_optimized(nums):

n=len(nums)

result=[]

prefix_sum=0

foriinrange(n):

prefix_sum+=nums[i]

result.extend([prefix_sum](n-i))#每次前缀和重复(n-i)次

returnresult

示例调用

print(subarray_sums_optimized([1,2,3]))#输出:[6,5,4,3,2,1]

优化点:

-通过前缀和避免重复计算,将时间复杂度降为O(n)。

-关键在于理解前缀和如何生成所有子数组和。

题目2:

问题描述:

实现一个函数,判断一个字符串是否为“有效括号”组合。例如:`()[]{}`是有效的,`(]`是无效的。

要求:

-使用栈结构解决。

-解释栈的应用场景及时间复杂度。

答案解析:

python

defisValid(s:str)-bool:

stack=[]

mapping={):(,]:[,}:{}

forcharins:

ifcharinmapping:

top=stack.pop()ifstackelse#

ifmapping[char]!=top:

returnFalse

else:

stack.append(char)

returnnotstack

示例调用

print(isValid(()[]{}))#输出:True

print(isValid((]))#输出:False

解析:

-栈的应用:左括号入栈,右括号时与栈顶匹配。

-时间复杂度:O(n),每个字符最多入栈和出栈一次。

-关键点:使用哈希表`mapping`加速匹配。

题目3:

问题描述:

给定一个链表,反转其节点并返回反转后的链表。

要求:

-不能使用递归,必须迭代解决。

-解释反转逻辑及边界条件。

答案解析:

python

classListNode:

def__init__(self,val=0,next=None):

self.val=val

self.next=next

defreverseList(head:ListNode)-ListNode:

prev=None

current=head

whilecurrent:

next_node=current.next#保存下一个节点

current.next=prev#反转指针

prev=current#移动prev

current=next_node#移动current

returnprev

示例调用

创建链表1-2-3

head=ListNode(1,ListNode(2,ListNode(3)))

reversed_head=reverseList(head)

print([node.valfornodein[reversed_head,reversed_head.next,reversed_head.next.next]])#输出:[3,2,1]

解析:

-反转逻辑:逐个节点反转`next`指针。

-

文档评论(0)

1亿VIP精品文档

相关文档