面试问题

时间:2010-02-03 08:00:55

标签: c++ c algorithm

给定 T 大小的链接列表,选择第一个 2n 节点并从中删除第一个 n 节点;然后为接下来的2n个节点执行此操作,等等......

例如 - 让我们考虑一个大小 7 的链接列表:

  `1->2->3->4->5->6->7`

如果 n = 2 ,则所需的输出为:

  `1->2->5->6->7`

我不明白这个问题实际上是什么意思。有人可以帮我理解这个问题吗?

编辑:添加C和C ++标签,以便可以达到更多的目标,当然这些只是面试中允许的两种语言。

2 个答案:

答案 0 :(得分:6)

实际上看起来应该说:

  

给定T大小的链表,选择前2n个节点并从中删除 last n个节点;然后为接下来的2n个节点执行此操作,等等......

或:

  

给定一个T大小的链表,选择前2n个节点,然后保持前n个节点;然后为接下来的2n个节点执行此操作,等等......

这意味着选择1,2,3,4然后删除3,4(或保留1,2,这是相同的事情)。然后选择5,6,7,8,不可能这样停止。

答案 1 :(得分:3)

我认为它甚至比@paxdiablo更简单......

do
  take n
  skip n
until you run out of elements to take or skip