2024年5月31日发(作者:凌元驹)
ios算法面试题
一、题目描述
在iOS开发中,算法是面试中常见的考察点之一。本文将给出一些
常见的iOS算法面试题,帮助读者提升算法解决问题的能力。
二、数组操作
1. 反转数组
题目描述:给定一个整型数组,将数组中的元素反转,并返回反转
后的数组。
解题思路:使用两个指针,一个指向数组的头部,一个指向数组的
尾部。然后交换两个指针对应的元素,并分别向中间移动,直到两个
指针相遇。
示例代码:
```swift
func reverseArray(_ array: [Int]) -> [Int] {
var result = array
var left = 0
var right = - 1
while left < right {
let temp = result[left]
result[left] = result[right]
result[right] = temp
left += 1
right -= 1
}
return result
}
```
2. 数组中的最大值和最小值
题目描述:给定一个整型数组,找出数组中的最大值和最小值,并
分别返回。
解题思路:遍历数组,使用两个变量分别保存最大值和最小值,然
后与当前遍历到的元素进行比较,更新最大值和最小值。
示例代码:
```swift
func findMinMax(_ array: [Int]) -> (Int, Int) {
var minVal = array[0]
var maxVal = array[0]
for i in 1..< {
if array[i] < minVal {
minVal = array[i]
}
if array[i] > maxVal {
maxVal = array[i]
}
}
return (minVal, maxVal)
}
```
三、链表操作
1. 反转链表
题目描述:给定一个链表,请实现反转链表的函数。
解题思路:使用三个指针,分别记录当前节点、前一个节点和后一
个节点。在遍历链表的过程中,将当前节点的指针指向前一个节点,
然后将前一个节点指向当前节点,最后将当前节点指向下一个节点。
示例代码:
```swift
class ListNode {
var value: Int
var next: ListNode?
init(_ value: Int) {
= value
}
}
func reverseLinkedList(_ head: ListNode?) -> ListNode? {
var currentNode = head
var previousNode: ListNode?
while currentNode != nil {
let nextNode = currentNode?.next
currentNode?.next = previousNode
previousNode = currentNode
currentNode = nextNode
}
return previousNode
}
```
2. 删除链表倒数第N个节点
2024年5月31日发(作者:凌元驹)
ios算法面试题
一、题目描述
在iOS开发中,算法是面试中常见的考察点之一。本文将给出一些
常见的iOS算法面试题,帮助读者提升算法解决问题的能力。
二、数组操作
1. 反转数组
题目描述:给定一个整型数组,将数组中的元素反转,并返回反转
后的数组。
解题思路:使用两个指针,一个指向数组的头部,一个指向数组的
尾部。然后交换两个指针对应的元素,并分别向中间移动,直到两个
指针相遇。
示例代码:
```swift
func reverseArray(_ array: [Int]) -> [Int] {
var result = array
var left = 0
var right = - 1
while left < right {
let temp = result[left]
result[left] = result[right]
result[right] = temp
left += 1
right -= 1
}
return result
}
```
2. 数组中的最大值和最小值
题目描述:给定一个整型数组,找出数组中的最大值和最小值,并
分别返回。
解题思路:遍历数组,使用两个变量分别保存最大值和最小值,然
后与当前遍历到的元素进行比较,更新最大值和最小值。
示例代码:
```swift
func findMinMax(_ array: [Int]) -> (Int, Int) {
var minVal = array[0]
var maxVal = array[0]
for i in 1..< {
if array[i] < minVal {
minVal = array[i]
}
if array[i] > maxVal {
maxVal = array[i]
}
}
return (minVal, maxVal)
}
```
三、链表操作
1. 反转链表
题目描述:给定一个链表,请实现反转链表的函数。
解题思路:使用三个指针,分别记录当前节点、前一个节点和后一
个节点。在遍历链表的过程中,将当前节点的指针指向前一个节点,
然后将前一个节点指向当前节点,最后将当前节点指向下一个节点。
示例代码:
```swift
class ListNode {
var value: Int
var next: ListNode?
init(_ value: Int) {
= value
}
}
func reverseLinkedList(_ head: ListNode?) -> ListNode? {
var currentNode = head
var previousNode: ListNode?
while currentNode != nil {
let nextNode = currentNode?.next
currentNode?.next = previousNode
previousNode = currentNode
currentNode = nextNode
}
return previousNode
}
```
2. 删除链表倒数第N个节点