2026年AI算法工程师面试题及解答.docxVIP

  • 0
  • 0
  • 约5.13千字
  • 约 15页
  • 2026-01-13 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年AI算法工程师面试题及解答

一、编程与算法题(共5题,每题8分,总分40分)

1.题目(8分):

给定一个无重复元素的数组`nums`和一个目标值`target`,请设计一个函数,找出数组中和为目标值的三元组,并返回所有可能的组合。要求时间复杂度不超过O(n2)。

示例:

输入:`nums=[-1,0,1,2]`,`target=0`

输出:`[[-1,0,1],[-1,2,1]]`

解答:

python

defthree_sum(nums,target):

nums.sort()

n=len(nums)

res=[]

foriinrange(n-2):

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

continue

left,right=i+1,n-1

whileleftright:

total=nums[i]+nums[left]+nums[right]

iftotal==target:

res.append([nums[i],nums[left],nums[right]])

whileleftrightandnums[left]==nums[left+1]:

left+=1

whileleftrightandnums[right]==nums[right-1]:

right-=1

left+=1

right-=1

eliftotaltarget:

left+=1

else:

right-=1

returnres

解析:

1.首先对数组进行排序,便于使用双指针法。

2.遍历数组,对于每个元素,使用双指针在剩余部分寻找和为`target-nums[i]`的两个数。

3.避免重复解:跳过相同元素,防止三元组重复。

4.时间复杂度:排序O(nlogn)+遍历O(n)+双指针O(n)=O(n2)。

2.题目(8分):

请实现一个函数,将一个非空整数数组`nums`中的元素按奇偶排序,并返回排序后的数组。要求空间复杂度为O(1)。

示例:

输入:`nums=[3,1,2,4]`

输出:`[1,3,2,4]`(或`[2,4,1,3]`,奇偶分别排序)

解答:

python

defsort_array_by_parity(nums):

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

whileleftright:

whileleftrightandnums[left]%2==1:

left+=1

whileleftrightandnums[right]%2==0:

right-=1

ifleftright:

nums[left],nums[right]=nums[right],nums[left]

left+=1

right-=1

returnnums

解析:

1.使用双指针,`left`从左向右找偶数,`right`从右向左找奇数。

2.交换不满足位置要求的元素,直到`left=right`。

3.空间复杂度:仅使用常数额外空间。

3.题目(8分):

给定一个字符串`s`,请判断其是否是一个有效的括号嵌套。例如:

-输入:`s=()`,输出:`True`

-输入:`s=(())`,输出:`True`

-输入:`s=(()`,输出:`False`

解答:

python

defis_valid_brackets(s):

stack=[]

mapping={):(,}:{,]:[}

forcharins:

ifcharinmapping:

top=stack.pop()ifstackelse#

ifmapping[char]!=top:

returnFalse

else:

stack.append(char)

returnnotstack

解析:

1.使用栈存储左括号,遇到右括号时与栈顶匹配。

2.若栈为空或栈顶不匹配,则无效。

3.最终栈为空则有效。

4.题目(8分):

给定一个字符串`s`,请找到其中最长的无重复字符的子串长度。例如:

-输入:`s=abcabcbb`,输出:`3`(abc)

-输入:`s=bbbbb`,输出:`1`

解答:

python

deflength_of_longest_substring(s):

char_set=s

文档评论(0)

1亿VIP精品文档

相关文档