一个长度为99的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点( )。
答案:99步
思路:假设一共需要移动x步,则A共走了x个节点,B共走了3x个节点。要让A与B指向同一个节点,必然有B比A多经过了整数倍的链表长度(圈的长度),假定经过了i倍的链表长度。则有3x-x=99*i,即2x=99i(x和i必然是正整数)所以取最小可能值,i=2,x=99。
一个长度为99的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点( )。
答案:99步
思路:假设一共需要移动x步,则A共走了x个节点,B共走了3x个节点。要让A与B指向同一个节点,必然有B比A多经过了整数倍的链表长度(圈的长度),假定经过了i倍的链表长度。则有3x-x=99*i,即2x=99i(x和i必然是正整数)所以取最小可能值,i=2,x=99。