2026年人工智能算法工程师面试题及解答.docxVIP

  • 0
  • 0
  • 约5.96千字
  • 约 16页
  • 2026-01-05 发布于福建
  • 举报

2026年人工智能算法工程师面试题及解答.docx

第PAGE页共NUMPAGES页

2026年人工智能算法工程师面试题及解答

一、编程题(共5题,每题10分,总分50分)

1.题目(10分):

编写一个Python函数,实现快速排序算法,并对列表`[34,7,23,32,5,62]`进行排序。要求输出排序后的列表。

解答:

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)

arr=[34,7,23,32,5,62]

sorted_arr=quick_sort(arr)

print(sorted_arr)#输出:[5,7,23,32,34,62]

解析:

快速排序是分治算法的经典实现,核心思想是选择一个基准值(pivot),将数组分为三部分:小于基准值的、等于基准值的、大于基准值的。然后递归地对左右两部分进行排序。上述代码使用列表推导式进行分割,简洁高效。

2.题目(10分):

给定一个字符串`s=abracadabra`,编写Python代码找出其中所有不重复的子串,并按长度从大到小排序。要求输出子串及其长度。

解答:

python

defunique_substrings(s):

substrings=set()

foriinrange(len(s)):

forjinrange(i+1,len(s)+1):

substrings.add(s[i:j])

sorted_substrings=sorted(substrings,key=len,reverse=True)

return[(sub,len(sub))forsubinsorted_substrings]

s=abracadabra

result=unique_substrings(s)

print(result)

输出:[(abracadabra,11),(bracadabra,10),(racadabra,9),...,(a,1)]

解析:

通过两层循环遍历所有可能的子串,并使用集合去重。然后按长度降序排序。注意集合是无序的,因此需要先转换为列表再排序。

3.题目(10分):

编写一个Python函数,实现二分查找算法。输入为一个有序列表`arr`和目标值`target`,输出为目标值的索引(若不存在则返回-1)。

解答:

python

defbinary_search(arr,target):

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

whileleft=right:

mid=(left+right)//2

ifarr[mid]==target:

returnmid

elifarr[mid]target:

left=mid+1

else:

right=mid-1

return-1

arr=[1,3,5,7,9]

target=5

index=binary_search(arr,target)

print(index)#输出:2

解析:

二分查找适用于有序列表,通过不断缩小查找范围来定位目标值。每次将中间值与目标值比较,调整左右指针,直到找到或范围为空。

4.题目(10分):

给定一个包含整数的列表`nums`,编写Python代码找出其中所有和为`target`的不重复的数字对(顺序不重要)。要求输出所有满足条件的数字对。

解答:

python

deffind_pairs(nums,target):

seen=set()

pairs=set()

fornuminnums:

complement=target-num

ifcomplementinseen:

pairs.add((min(num,complement),max(num,complement)))

seen.add(num)

returnlist(pairs)

nums=[2,7,11,15,-2,1]

target=9

result=find_pairs(nums,target)

print(

文档评论(0)

1亿VIP精品文档

相关文档