Этот код выглядит неправильно:
if nums.count == 2 {
if nums[slowPointer] == nums[fastPointer] {
nums.remove(at: 1)
}
return 2
}
Если nums.count
равно 2, и две записи совпадают (ваш случай [1,1]
, вы сначала удаляете один из объектов, а затем возвращаете2. Таким образом, в этом случае вы возвращаете массив, содержащий один элемент, но счет 2. 2. 1006 *
Чтобы исправить свой код, верните nums.count, а не 2, для этого случая:
if nums.count == 2 {
if nums[slowPointer] == nums[fastPointer] {
nums.remove(at: 1)
}
nums.count
}
Редактировать: Комментарий ниже является неправильным.
Обратите внимание, что даже если вы исправите эту ошибку, ваш код будет иметь производительность O (N ^ 2). Это не хорошо.