科技公司面试题技术篇答案汇集.docxVIP

  • 0
  • 0
  • 约7.22千字
  • 约 21页
  • 2026-02-12 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年科技公司面试题:技术篇答案汇集

1.数据结构与算法(共5题,每题10分,总分50分)

题目1:

题目:

给定一个未排序的整数数组,返回其中缺失的最小正整数。

示例:

输入:`[3,4,-1,1]`,输出:`2`

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

要求:

-时间复杂度:O(n)

-空间复杂度:O(1)

答案:

python

deffirst_missing_positive(nums):

n=len(nums)

foriinrange(n):

while1=nums[i]=nandnums[nums[i]-1]!=nums[i]:

nums[nums[i]-1],nums[i]=nums[i],nums[nums[i]-1]

foriinrange(n):

ifnums[i]!=i+1:

returni+1

returnn+1

解析:

-通过原地交换将每个数字放到其正确的位置(即`nums[i]`应放在`i`位置),然后遍历数组找到第一个不满足`nums[i]==i+1`的位置,其索引即为缺失的最小正整数。

-若所有数字均正确,则返回`n+1`。

-时间复杂度:O(n),空间复杂度:O(1)。

题目2:

题目:

设计一个LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作。

要求:

-`get(key)`:返回键对应的值,若不存在返回-1。

-`put(key,value)`:插入或更新键值对,当缓存容量满时,删除最久未使用的项。

示例:

LRU=LRUCache(2)

LRU.put(1,1)

LRU.put(2,2)

LRU.get(1)//返回1

LRU.put(3,3)//去除键2

LRU.get(2)//返回-1

答案:

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:

oldest=self.order.pop(0)

delself.cache[oldest]

self.cache[key]=value

self.order.append(key)

解析:

-使用哈希表`cache`存储键值对,`order`列表记录访问顺序。

-`get`操作时,若键存在则移动到`order`末尾表示最近使用。

-`put`操作时,若键已存在则更新值并移动到末尾;若容量满则删除最久未使用的项(`order`头部)。

-时间复杂度:O(1),空间复杂度:O(capacity)。

题目3:

题目:

给定一个二叉树,判断其是否是平衡二叉树(即任意节点的左右子树高度差不超过1)。

示例:

3

/\

920

/\

157

输出:`True`

1

/\

22

/

3

输出:`False`

答案:

python

classTreeNode:

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

self.val=val

self.left=left

self.right=right

defis_balanced(root:TreeNode)-bool:

defcheck(node:TreeNode)-int:

ifnotnode:

return0

left=check(node.left)

right=check(node.right)

ifleft==-1orright==-1orabs(left-right)1:

return-1

returnmax(left,right)+1

returncheck(root)!=-1

解析:

-采

文档评论(0)

1亿VIP精品文档

相关文档