- 1
- 0
- 约8.07千字
- 约 24页
- 2026-01-11 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年AI技术面试题集及解答指南
一、编程与算法基础(共5题,每题10分)
1.(10分)
题目:
编写一个Python函数,实现快速排序算法。输入为一个无序列表,输出为排序后的列表。要求在函数中处理递归终止条件,并确保时间复杂度为O(nlogn)。
答案与解析:
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)
解析:
快速排序通过分治思想实现,选择一个基准值(pivot),将列表分为小于、等于、大于三部分,然后递归排序左右子列表。时间复杂度在平均情况下为O(nlogn),最坏情况下为O(n2)。代码中通过列表推导式高效分割列表,确保递归终止条件为列表长度小于等于1。
2.(10分)
题目:
给定一个字符串`s`和一个整数`k`,编写一个函数,返回所有长度为`k`的子串及其出现次数。要求按子串字典序排序,返回次数最多的前10个子串。
答案与解析:
python
fromcollectionsimportdefaultdict
deftop_k_substrings(s,k):
count=defaultdict(int)
foriinrange(len(s)-k+1):
substring=s[i:i+k]
count[substring]+=1
sorted_count=sorted(count.items(),key=lambdax:(-x[1],x[0]))
returnsorted_count[:10]
解析:
通过滑动窗口遍历字符串,统计所有长度为`k`的子串出现次数,使用`defaultdict`高效计数。最后按出现次数降序、子串升序排序,返回前10个结果。时间复杂度为O(nk),适用于k较小的情况。
3.(10分)
题目:
实现一个二叉树的深度优先遍历(前序、中序、后序),要求使用递归方式。输入为二叉树根节点,输出为遍历结果列表。
答案与解析:
python
classTreeNode:
def__init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
defpreorder_traversal(root):
ifnotroot:
return[]
return[root.val]+preorder_traversal(root.left)+preorder_traversal(root.right)
definorder_traversal(root):
ifnotroot:
return[]
returninorder_traversal(root.left)+[root.val]+inorder_traversal(root.right)
defpostorder_traversal(root):
ifnotroot:
return[]
returnpostorder_traversal(root.left)+postorder_traversal(root.right)+[root.val]
解析:
前序遍历顺序为根-左-右,中序为左-根-右,后序为左-右-根。递归实现时,通过分治思想递归子树,并合并结果。时间复杂度为O(n),空间复杂度为O(h),h为树的高度。
4.(10分)
题目:
给定一个整数数组,编写一个函数,判断数组是否可以划分为两个子集,使得两个子集的数字和相等。要求返回任意一个符合条件的子集。
答案与解析:
python
defcan_partition(nums):
total=sum(nums)
iftotal%2!=0:
return[]
target=total//2
dp=[False](target+1)
dp[0]=True
fornuminnums:
foriinrange(target,num-1,-1):
dp[i]=dp[i]ordp[i-num]
原创力文档

文档评论(0)