1

考试中的问题:

  1. 给定一个大小未知的链表n,在哪里3划分n,我们如何打印链表的中间元素组(例如在 1/3 和 2/3 之间),只使用3指针,而不使用计数器?
  2. 我们如何只用两个指针来做到这一点?

备注:我们不能向左走,只能向右走!

无法提出不涉及计数器的答案,有什么建议吗?

4

1 回答 1

7

试着把指针想象成磁带上的拾音头。您从一开始就全部启动它们,然后以不同的速度移动它们(提示,这些速度是彼此 1/3 分数的倍数)。现在想想速度较慢的指针在哪里,当最快移动的指针到达终点时。

现在如何使指针像那样移动,即使您只能递增而不能进行乘法或除法。想想机械计数器是如何传递其数字的。

以及如何只用两个指针来做: 想想你到达起始位置后可以做什么: 将快指针放在慢指针的位置并重复。

于 2012-06-30T01:30:01.083 回答