- 1
- 0
- 约7.19千字
- 约 22页
- 2026-02-26 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年百度研发工程师面试要点及答案
一、编程基础(共5题,每题6分,总分30分)
1.题目:
实现一个函数,输入一个正整数`n`,返回`n`的阶乘。要求不使用递归,且考虑大数问题(例如`n=100`)。
答案:
python
deffactorial(n):
ifn==0:
return1
result=1
foriinrange(1,n+1):
result=i
returnresult
解析:
-阶乘计算本质上是连续乘法,递归会导致栈溢出(尤其是大数时)。
-大数问题需考虑Python内置的`int`类型,可自动处理大数,但效率较低。优化方案可使用`d`(Python3.8+)或第三方库如`gmpy2`。
2.题目:
给定一个字符串`s`,判断其是否为有效的括号组合(如`()[]{}`)。
答案:
python
defisValid(s):
stack=[]
mapping={(:),[:],{:}}
forcharins:
ifcharinmapping:
stack.append(char)
else:
ifnotstackormapping[stack.pop()]!=char:
returnFalse
returnnotstack
解析:
-栈是解决括号匹配的经典方法,时间复杂度O(n),空间复杂度O(n)。
-遍历字符串,左括号入栈,右括号与栈顶匹配,不匹配则返回`False`。
3.题目:
实现快速排序算法,并分析其时间复杂度。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
returnquick_sort(left)+middle+quick_sort(right)
解析:
-快速排序核心是分治思想,平均时间复杂度O(nlogn),最坏O(n2)(当数组已有序)。
-优化方案:随机选择基准值,三路划分(小于、等于、大于)。
4.题目:
实现一个函数,输入一个链表,返回其反转后的链表。
答案:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
defreverseList(head):
prev=None
current=head
whilecurrent:
next_node=current.next
current.next=prev
prev=current
current=next_node
returnprev
解析:
-迭代反转链表,时间复杂度O(n),空间复杂度O(1)。
-递归方案也可行,但需注意栈溢出问题。
5.题目:
给定一个无重复元素的数组`nums`和一个目标值`target`,返回所有相加等于`target`的`nums`子集。
答案:
python
defcombinationSum(nums,target):
result=[]
nums.sort()
defbacktrack(start,path,target):
iftarget==0:
result.append(path)
return
foriinrange(start,len(nums)):
ifnums[i]target:
break
backtrack(i,path+[nums[i]],target-nums[i])
backtrack(0,[],target)
returnresult
解析:
-回溯算法解决组合问题,需去重避免重复子集(如`[2,2]`)。
-时间复杂度O(2^n),适用于小规模问题。
二、数据结构与算法(共5题,每题6分,总分30分)
1.题目:
设计LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作。
答案:
python
classLRUCache:
def__init__(self,capacity):
self.capacity=capacity
self.cache={}
self.order=[
原创力文档

文档评论(0)