由于本人还不太会发表比较长的文章,故把此题目和代码分开,见谅!
题目:
Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?
思路:
既然发帖水王的帖子数目占了总帖子数目的一半以上,则只要找到并“删除”两个ID不同的帖子,剩下的必然为“水王”的帖子。
1、遍历存ID的数组,设置标志位flag,若标志位的ID和遍历处的ID不同则删除,标志位向后移动以为;否则标志位的位置不变,继续向后遍历存ID的数组。(注意此处判断两个位置的ID不同时,要判断两个位置处的ID均未被标记过)
2、此处的删除就是将其ID设置为-1
3、最后遍历存ID的数组,若其不是-1,就是水王的ID了
代码:
题目:
Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?
思路:
既然发帖水王的帖子数目占了总帖子数目的一半以上,则只要找到并“删除”两个ID不同的帖子,剩下的必然为“水王”的帖子。
1、遍历存ID的数组,设置标志位flag,若标志位的ID和遍历处的ID不同则删除,标志位向后移动以为;否则标志位的位置不变,继续向后遍历存ID的数组。(注意此处判断两个位置的ID不同时,要判断两个位置处的ID均未被标记过)
2、此处的删除就是将其ID设置为-1
3、最后遍历存ID的数组,若其不是-1,就是水王的ID了
代码: