美团技术团队面试题与答案.docxVIP

  • 0
  • 0
  • 约7.18千字
  • 约 22页
  • 2026-01-28 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年美团技术团队面试题与答案

编程题(10题,共40分)

1.(4分)编写一个函数,输入一个整数数组,返回数组中所有奇数元素的平方和。

答案:

python

defsum_of_odd_squares(nums):

returnsum(xxforxinnumsifx%2!=0)

解析:

使用列表推导式遍历数组,筛选奇数并计算平方,最后求和。时间复杂度O(n),空间复杂度O(1)。

2.(6分)给定一个字符串,判断是否可以通过删除某些字符使其变为回文串。

答案:

python

defcan_be_palindrome(s):

left,right=0,len(s)-1

whileleftright:

ifs[left]!=s[right]:

returncan_be_palindrome(s[left:right])orcan_be_palindrome(s[left+1:right+1])

left+=1

right-=1

returnTrue

解析:

双指针法,从两端向中间比较。若字符不等,则分别删除左或右部分并递归判断。时间复杂度O(2^n),空间复杂度O(n)。

3.(8分)实现一个LRU(最近最少使用)缓存,支持get和put操作。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)=self.capacity:

delself.cache[self.order.pop(0)]

self.cache[key]=value

self.order.append(key)

解析:

使用哈希表存储键值对,双向链表维护访问顺序。get时移动元素到尾部,put时先删除最久未使用元素,再插入新元素。时间复杂度O(1),空间复杂度O(capacity)。

4.(10分)设计一个算法,找出无重复字符的最长子串长度。

答案:

python

deflength_of_longest_substring(s:str)-int:

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

解析:

滑动窗口法,左指针右移时删除重复字符,右指针右移时添加字符。时间复杂度O(n),空间复杂度O(min(m,n)),m为字符集大小。

5.(12分)编写一个函数,将32位无符号整数反转。

答案:

python

defreverse_bits(n:int)-int:

result=0

for_inrange(32):

result=(result1)|(n1)

n=1

returnresult0xFFFFFFFF

解析:

逐位反转,左移当前结果并添加当前位,右移原数。最后取低32位。时间复杂度O(1),空间复杂度O(1)。

6.(8分)给定一个包含n个整数的数组,找出和为target的三个数的组合数量。

答案:

python

defthree_sum(nums:List[int],target:int)-int:

nums.sort()

count=0

foriinrange(len(nums)-2):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,len(nums)-1

whileleftright:

total=nums[i]

文档评论(0)

1亿VIP精品文档

相关文档