MST

星途 面试题库

面试题:Objective-C可变数组的元素交换及查找特定元素的高效实现

给定一个可变数组,其中包含多个NSNumber类型的对象,编写Objective-C代码实现将数组中第一个和最后一个元素进行交换。并且实现一个方法,高效查找数组中是否存在值为10的NSNumber对象,如果存在返回其索引,不存在返回 -1。说明你所使用查找算法的时间复杂度。
28.6万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
#import <Foundation/Foundation.h>

// 交换数组第一个和最后一个元素
void swapFirstAndLastElement(NSMutableArray<NSNumber *> *array) {
    if (array.count < 2) {
        return;
    }
    NSNumber *first = array[0];
    NSNumber *last = array[array.count - 1];
    array[0] = last;
    array[array.count - 1] = first;
}

// 查找值为10的NSNumber对象
NSInteger findNumberTen(NSMutableArray<NSNumber *> *array) {
    for (NSInteger i = 0; i < array.count; i++) {
        if ([array[i] integerValue] == 10) {
            return i;
        }
    }
    return -1;
}

在上述代码中:

  1. swapFirstAndLastElement 方法用于交换可变数组的第一个和最后一个元素。如果数组元素个数小于2,则直接返回。
  2. findNumberTen 方法用于查找数组中值为10的 NSNumber 对象,这里使用了简单的线性查找。

查找算法 findNumberTen 的时间复杂度为 O(n),其中 n 是数组的长度。因为在最坏的情况下,需要遍历数组中的每一个元素才能确定是否存在值为10的对象。