2026年百度公司技术面试题及答案解析.docxVIP

  • 0
  • 0
  • 约4.54千字
  • 约 14页
  • 2026-01-30 发布于福建
  • 举报

2026年百度公司技术面试题及答案解析.docx

第PAGE页共NUMPAGES页

2026年百度公司技术面试题及答案解析

一、编程题(共3题,每题20分,总计60分)

1.题1(20分):字符串最长回文子串问题

题目描述:

给定一个字符串`s`,请找出其中最长的回文子串的长度。回文子串是指正读和反读都相同的子串。

示例输入:`s=babad`

示例输出:`3`(最长回文子串可以是bab或aba)

要求:

-不能使用额外的空间复杂度超过O(1)。

-时间复杂度尽可能优化。

答案与解析:

答案:

python

deflongest_palindrome(s:str)-int:

ifnots:

return0

n=len(s)

max_len=1

start=0

foriinrange(n):

以i为中心,尝试奇数长度回文

left,right=i,i

whileleft=0andrightnands[left]==s[right]:

ifright-left+1max_len:

max_len=right-left+1

start=left

left-=1

right+=1

以i和i+1为中心,尝试偶数长度回文

left,right=i,i+1

whileleft=0andrightnands[left]==s[right]:

ifright-left+1max_len:

max_len=right-left+1

start=left

left-=1

right+=1

returnmax_len

解析:

-中心扩展法:回文可以以单个字符为中心(如aba),也可以以两个字符为中心(如abba)。因此,对于每个字符,尝试向两边扩展,分别处理奇数和偶数长度的回文。

-时间复杂度:O(n2),因为对于每个字符,最坏情况下需要扩展O(n)次。

-空间复杂度:O(1),仅使用常数个额外变量。

2.题2(20分):二叉树最大深度问题

题目描述:

给定一个二叉树,请计算其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。

示例输入:

3

/\

920

/\

157

示例输出:`3`

要求:

-可以使用递归或迭代方法解决。

答案与解析:

答案:

python

Definitionforabinarytreenode.

classTreeNode:

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

self.val=val

self.left=left

self.right=right

defmax_depth(root:TreeNode)-int:

ifnotroot:

return0

return1+max(max_depth(root.left),max_depth(root.right))

解析:

-递归方法:

-如果树为空,深度为0。

-否则,树的深度等于左子树和右子树的最大深度加1。

-迭代方法(使用队列):

-使用广度优先搜索(BFS),每层遍历一次深度加1。

-时间复杂度:O(n),需要遍历所有节点。

-空间复杂度:O(n),取决于树的高度(最坏情况下为O(n))。

3.题3(20分):滑动窗口最大值问题

题目描述:

给定一个整数数组`nums`和一个整数`k`,请找到长度为`k`的连续子数组中,最大值的和。

示例输入:`nums=[1,3,-1,-3,5,3,6,7]`,`k=3`

示例输出:`12`(最大和的子数组为[3,6,7])

要求:

-不能使用嵌套循环,时间复杂度应优于O(nk)。

答案与解析:

答案:

python

fromcollectionsimportdeque

defmax_sliding_window(nums,k):

ifnotnumsork==0:

return[]

q=deque()#存储窗口最大值的索引

result=[]

foriinrange(len(nums)):

移除不在窗口内的索引

ifqandq[0]i-k+1:

q.popleft()

移除当前窗口内比nums[i]小的索引

whileqandnums[q[-1]]nums[i]:

q.pop()

q.append(i)

窗口大小达到k时,记录最大值

ifi=k-1:

result.append(nums[q[0]])

r

文档评论(0)

1亿VIP精品文档

相关文档