- 1
- 0
- 约6.42千字
- 约 18页
- 2026-02-05 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年百度算法工程师面试题解析
一、编程基础(4题,每题25分,共100分)
1.题目:
实现一个函数,输入一个正整数n,返回一个长度为n的数组,数组中的每个元素都是唯一的,且范围在[1,n]之间,不使用额外的存储空间。
示例:
输入:3
输出:[1,2,3]
解析:
要求不使用额外存储空间,意味着不能使用哈希表或数组等额外数据结构。可以通过数学公式或位运算解决,但最直观的方法是交换数字。
答案:
python
defswap_numbers(nums,i,j):
nums[i]^=nums[j]
nums[j]^=nums[i]
nums[i]^=nums[j]
defunique_numbers(n):
nums=list(range(1,n+1))
foriinrange(n):
ifnums[i]=n:
swap_numbers(nums,i,nums[i]-1)
returnnums
2.题目:
给定一个字符串s,找到其中不重复的最长子串的长度。
示例:
输入:abcabcbb
输出:3(abc)
解析:
可以使用滑动窗口的方法,通过双指针维护一个窗口,记录字符出现的位置,避免重复。
答案:
python
deflength_of_longest_substring(s):
char_set=set()
left=0
max_len=0
forrightinrange(len(s)):
whiles[right]inchar_set:
char_set.remove(s[left])
left+=1
char_set.add(s[right])
max_len=max(max_len,right-left+1)
returnmax_len
3.题目:
实现一个LRU(LeastRecentlyUsed)缓存,支持get和put操作。
示例:
python
LRUCache=LRUCache(2)
LRUCache.put(1,1)
LRUCache.put(2,2)
LRUCache.get(1)#返回1
LRUCache.put(3,3)#去除键2
LRUCache.get(2)#返回-1(未找到)
LRUCache.put(4,4)#去除键1
LRUCache.get(1)#返回-1(未找到)
LRUCache.get(3)#返回3
LRUCache.get(4)#返回4
解析:
LRU缓存需要快速访问和删除最久未使用的元素。可以使用双向链表结合哈希表实现。
答案:
python
classListNode:
def__init__(self,key=0,value=0):
self.key=key
self.value=value
self.prev=None
self.next=None
classLRUCache:
def__init__(self,capacity:int):
self.capacity=capacity
self.cache={}
self.head=ListNode()
self.tail=ListNode()
self.head.next=self.tail
self.tail.prev=self.head
def_add_node(self,node):
node.prev=self.head
node.next=self.head.next
self.head.next.prev=node
self.head.next=node
def_remove_node(self,node):
prev_node=node.prev
next_node=node.next
prev_node.next=next_node
next_node.prev=prev_node
def_move_to_head(self,node):
self._remove_node(node)
self._add_node(node)
def_pop_tail(self):
res=self.tail.prev
self._remove_node(res)
returnres
defget(self,key:int)-int:
node=self.cache.get(key,None)
ifno
原创力文档

文档评论(0)