2026年苹果公司面试题及答案.docxVIP

  • 2
  • 0
  • 约7.02千字
  • 约 23页
  • 2026-01-05 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年苹果公司面试题及答案

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

题目1(10分)

问题描述:请实现一个函数,输入一个字符串,返回该字符串中所有唯一字符的集合。例如,输入leetcode,返回[e,t,c,d,o,l]。

答案:

swift

funcuniqueCharacters(instring:String)-[Character]{

varcharSet=SetCharacter()

varresult=[Character]()

forcharinstring{

if!charSet.contains(char){

charSet.insert(char)

result.append(char)

}

}

returnresult

}

解析:

1.使用Set数据结构存储已遇到的字符,确保唯一性

2.遍历输入字符串的每个字符

3.对于每个字符,检查是否已在Set中

4.如果不在,则添加到Set和结果数组中

5.最终返回结果数组,包含所有唯一字符

该算法时间复杂度为O(n),空间复杂度为O(n),其中n为字符串长度。

题目2(10分)

问题描述:给定一个包含n个整数的数组,设计一个算法找到和最接近0的三数之和。例如,输入[-1,2,1,-4],返回3(-1+1+2)。

答案:

swift

functhreeSumClosest(_nums:[Int],_target:Int)-Int{

ifnums.count3{

return0

}

//先排序

letsortedNums=nums.sorted()

varclosestSum=sortedNums[0]+sortedNums[1]+sortedNums[2]

foriin0..sortedNums.count-2{

varleft=i+1

varright=sortedNums.count-1

whileleftright{

letcurrentSum=sortedNums[i]+sortedNums[left]+sortedNums[right]

ifabs(currentSum-target)abs(closestSum-target){

closestSum=currentSum

}

ifcurrentSumtarget{

left+=1

}elseifcurrentSumtarget{

right-=1

}else{

returncurrentSum

}

}

}

returnclosestSum

}

解析:

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

2.初始化最接近和为前三个元素的和

3.遍历数组,对于每个元素,使用双指针在剩余部分寻找最接近目标的两个数

4.更新最接近和时,比较绝对差值

5.如果找到精确和,立即返回

6.最后返回最接近目标的三数之和

该算法时间复杂度为O(n2),空间复杂度为O(1)。

题目3(10分)

问题描述:实现一个LRU(最近最少使用)缓存,支持get和put操作。LRU缓存限制为固定大小,当达到限制时,最久未使用的元素将被移除。

答案:

swift

classLRUCache{

privateletcapacity:Int

privatevarcache:[Int:(value:Int,key:Int)]=[:]

privatevarkeys:[Int]=[]

init(_capacity:Int){

self.capacity=capacity

}

funcget(_key:Int)-Int{

ifletvalue=cache[key]{

//更新使用顺序

keys.remove(at:keys.firstIndex(of:value.key)!)

keys.append(key)

returnvalue.value

}

return-1

}

funcput(_key:Int,_value:Int){

ifletexisting=cache[key]{

//更新值和顺序

cache[key]=(value,key)

keys.remove(at:keys.firstIndex(of:existing.key)!)

keys.append(key)

}else{

ifcache.count=capacity{

//移除最久未使用的元

文档评论(0)

1亿VIP精品文档

相关文档