- 0
- 0
- 约5.79千字
- 约 17页
- 2026-01-28 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年Autodesk工程师面试题及答案
一、编程与算法(5题,每题10分,共50分)
1.题目:
编写一个函数,实现将一个字符串中的所有字母逆序,但保持非字母字符的位置不变。例如,输入`a-bC-dEf-ghIj`,输出`j-Ih-gfEd-CbA`。
答案:
python
defreverse_letters(s:str)-str:
letters=[cforcinsifc.isalpha()]
letters.reverse()
res=list(s)
idx=0
foriinrange(len(res)):
ifres[i].isalpha():
res[i]=letters[idx]
idx+=1
return.join(res)
示例
print(reverse_letters(a-bC-dEf-ghIj))#输出:j-Ih-gfEd-CbA
解析:
-首先将所有字母提取出来并逆序排列。
-然后遍历原字符串,遇到字母时替换为逆序后的字母。
-非字母字符保持原位。
2.题目:
给定一个包含多个矩形(每个矩形用`[x1,y1,x2,y2]`表示)的列表,编写一个函数计算这些矩形覆盖的总面积。如果矩形重叠,面积应累加但不重复计算重叠部分。
答案:
python
defcompute_total_area(rectangles:List[List[int]])-int:
events=[]
forx1,y1,x2,y2inrectangles:
events.append((x1,start,y1,y2))
events.append((x2,end,y1,y2))
events.sort()
active_intervals=[]
max_y=0
total_area=0
forx,typ,y1,y2inevents:
iftyp==start:
active_intervals.append((y1,y2))
max_y=max(max_y,y2-y1)
else:
active_intervals.remove((y1,y2))
ifactive_intervals:
total_area+=max_y
returntotal_area
示例
print(compute_total_area([[1,1,3,3],[1,3,4,4],[3,1,5,2]]))#输出:7
解析:
-将所有矩形的起止点转换为事件,按x坐标排序。
-使用扫描线算法维护当前覆盖的y区间,计算面积。
-重叠部分通过维护最大y区间高度来避免重复计算。
3.题目:
实现一个二叉树的最大深度(最大路径长度)计算函数。假设二叉树节点定义如下:
python
classTreeNode:
def__init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
答案:
python
defmax_depth(root:TreeNode)-int:
ifnotroot:
return0
return1+max(max_depth(root.left),max_depth(root.right))
示例
构建树:
1
/\
23
/\\
456
root=TreeNode(1)
root.left=TreeNode(2,TreeNode(4),TreeNode(5))
root.right=TreeNode(3,None,TreeNode(6))
print(max_depth(root))#输出:3
解析:
-递归计算左子树和右子树的最大深度,加1为当前节点深度。
-递归基为空节点,深度为0。
4.题目:
设计一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为`capacity`。
答案:
python
classLRUCache:
def__init__(self,capacity:int):
self.capacity=capacity
self.cache=OrderedDict()
defget(self,key:int)-int:
ifkeynotinself.cache:
return-1
self.cache.move_to_end(k
原创力文档

文档评论(0)