给定 T 大小的链接列表,选择第一个 2n 节点并从中删除第一个 n 节点;然后为接下来的2n个节点执行此操作,等等......
例如 - 让我们考虑一个大小 7 的链接列表:
`1->2->3->4->5->6->7`
如果 n = 2 ,则所需的输出为:
`1->2->5->6->7`
我不明白这个问题实际上是什么意思。有人可以帮我理解这个问题吗?
编辑:添加C和C ++标签,以便可以达到更多的目标,当然这些只是面试中允许的两种语言。
答案 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