Решаю задачу с собеседования в Яндекс: reverse linked list

preview_player
Показать описание

Консультации:

Рекомендации по теме
Комментарии
Автор

спасибо, максимально понятно, до этого не мог уловить процесс замены))

maksigors
Автор

Спасибо! Круто! Хотелось бы формат собеседования ))

Evgru
Автор

struct List {
ListNode* reverseList(ListNode* head) {

ListNode* ans = nullptr;
while (head != nullptr) {
ListNode* node = head;
head = head->next;
node->next = ans;
ans = node;
}
return ans;
}
};
1->2->3->4->5
можете пояснить, при такой реализации, как происходит подцепление
1. создаем node, указатель на голову(единица)
2. сдвигаем голову на один элемент(двойка)
а вот дальше не совсем понятно node-> next это еще единица, зачем тогда тут next ? (или node-> next мы присваиваем указателю node -> nullptr)?

alexeyfalcon
Автор

Меня возьмут в гугол?)
func reverse(arr []int32) []int32 {
rev := make([]int32, len(arr))
for i, j := 0, len(arr)-1; i < len(arr); i, j = i+1, j-1 {
rev[j] = arr[i]
}
return rev
}

АндрейПопов-фиц
Автор

Владимир, у меня вопрос, почему задачи такие легкие для собеса в Яндекс? На Яндекс контесте, на бэкенд стажировку были задачи в много раз сложнее.

Hotrification
Автор

типичный литкод булшит)
адекватнее не 2 указателя а изначально в структуру всунуть размер)))

ну а если этого нету, то дать пи*ды тому кто придумал подобное, посчитать размер линейно и 2ым прохлдом вернуть желаемое.
суть в том что количество операций одинаково и кеш миссинг тот же.

MrIbah