Почитал в вики, в инете тут но не догоняю как это работает.
Пример вот из ссылки 60->50->40->30->20->10->40
почему вот написана такая фраза
For example : when tortoise comes to 40 hare is at 20 inside the loop.then they both meet at 20.
когда черепаха на 40, то заяц ведь на 20, почему написано
then they both meet at 20
и
Now send tortoise back to first node in the list. Let them both iterate at same speed(one node per step) then
я насколько понял мы должны отправить черепаху на старт, когда одинаковые значения. то есть если бы и черепаха и заяц были на 20, то да, отправляем черепаху на старт.
Было бы здорово, если кто-то код на яве или сишарпе накидал
Здравствуйте, e.thrash, Вы писали:
ET>Почитал в вики, в инете тут но не догоняю как это работает.
ET>Было бы здорово, если кто-то код на яве или сишарпе накидал
Здравствуйте, GarryIV, Вы писали:
GIV>Здравствуйте, e.thrash, Вы писали:
ET>>Почитал в вики, в инете тут но не догоняю как это работает.
ET>>Было бы здорово, если кто-то код на яве или сишарпе накидал
GIV>По твоей же ссылке код на Java?
но мне непонятно как он работает. объяснение не понятно, отсюда и код ставится под сомнение
Здравствуйте, e.thrash, Вы писали:
60->>50->40->30->20->10->40
ET>почему вот написана такая фраза
ET>
ET>For example : when tortoise comes to 40 hare is at 20 inside the loop.then they both meet at 20.
Заяц бежит со скоростью 2, а черепаха со скоростью 1, при этом в цикле 4 элемента.
Черепаха в узле 40 и до узла 20 ей надо сделать два шага, а заяц уже в узле 20, но пока черепаха делает два шага до этого узла он сделает круг по циклу.
Поэтому они встретятся в узле 20.
ET> и ET>
ET>Now send tortoise back to first node in the list. Let them both iterate at same speed(one node per step) then
public Node FindLoop()
{
Node tortoise = first;
Node hare = first;
while (hare.next != null)//Cдохнет, если цикла нет, а в цепочке четное кол-во элементов. Например, при 2 элементах сдохнет на второй итерации.
{
tortoise = tortoise.next;
hare = hare.next.next;
if( tortoise == hare)
{
break;
}
}
....
}
Здравствуйте, StatujaLeha, Вы писали:
SL>Здравствуйте, e.thrash, Вы писали:
60->>>50->40->30->20->10->40
ET>>почему вот написана такая фраза
ET>>
ET>>For example : when tortoise comes to 40 hare is at 20 inside the loop.then they both meet at 20.
SL>Заяц бежит со скоростью 2, а черепаха со скоростью 1, при этом в цикле 4 элемента. SL>Черепаха в узле 40 и до узла 20 ей надо сделать два шага, а заяц уже в узле 20, но пока черепаха делает два шага до этого узла он сделает круг по циклу. SL>Поэтому они встретятся в узле 20.
то есть подразумевается, что выделенные 40 это один объект? 60->50->40->30->20->10->40
тогда почему нам дана последовательность заканчивающаяся на 40? ведь у нас после 40 идут еще 30-20-10
Здравствуйте, e.thrash, Вы писали:
ET>то есть подразумевается, что выделенные 40 это один объект? 60->50->40->30->20->10->40 ET>тогда почему нам дана последовательность заканчивающаяся на 40? ведь у нас после 40 идут еще 30-20-10
Сори, не понял вопрос...
Если идти из узла 60 и выводить все пройденные узлы, то будет следующий лог: 60->50->40->30->20->10->40->30->20->10->40->(30->20->10->40)...
Здравствуйте, StatujaLeha, Вы писали:
SL>Здравствуйте, e.thrash, Вы писали:
ET>>то есть подразумевается, что выделенные 40 это один объект? 60->50->40->30->20->10->40 ET>>тогда почему нам дана последовательность заканчивающаяся на 40? ведь у нас после 40 идут еще 30-20-10
SL>Сори, не понял вопрос... SL>Если идти из узла 60 и выводить все пройденные узлы, то будет следующий лог: 60->>50->40->30->20->10->40->30->20->10->40->(30->20->10->40)...
Я рассматривал это как массив целых чисел.
а это надо, как я понимаю сейчас рассматривать как связанный список, где 40 это один и тот же объект.