go func longestEqualSequence(nums []int) int { if len(nums) == 0 { return 0 }
Реализуйте функцию, которая принимает слайс целых чисел и возвращает длину самой длинной подряд идущей последовательности одинаковых чисел.
go func longestEqualSequence(nums []int) int { if len(nums) == 0 { return 0 }
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте функцию, которая принимает слайс целых чисел и возвращает длину самой длинной подряд идущей последовательности одинаковых чисел.
Последовательность считается подряд идущей, если элементы идут рядом в исходном слайсе.
Ответ
go func longestEqualSequence(nums []int) int { if len(nums) == 0 { return 0 }
maxLen := 1
currentLen := 1
for i := 1; i < len(nums); i++ {
if nums[i] == nums[i-1] {
currentLen++
if currentLen > maxLen {
maxLen = currentLen
}
} else {
currentLen = 1
}
}
return maxLen
}
Функция итерируется по слайсу, сравнивая текущий элемент с предыдущим. Если они равны, увеличивает счётчик текущей последовательности. Если нет — сбрасывает счётчик. В конце возвращает максимальную длину подряд идущей последовательности одинаковых чисел.