«Информация на данном сайте предоставляется "КАК ЕСТЬ" без каких-либо гарантий и передачи прав. Мнения, высказанные здесь, являются отражением моего личного взгляда, а не позиции работодателя.»
Решение задачи из предыдущего поста http://blogs.technet.com/maykov/archive/2006/06/21/438071.aspx
Заводим два указателя - быстрый и медленный. Допустим, быстрый прыгает через два элемента, а медленный идет последовательно по каждому элементу. Если они встретятся - есть цикл. Если дойдут до конца - нет. Тут есть две проблемы:
1. Доказать, что они встретятся.
2. Оценить число итераций в случае если есть цикл. Когда его нет, очевидно число итераций n/m, где n - длина списка, а m - шаг быстрого указателя.
Anonymous comments are disabled