题目:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
设计思想
(1)顺序遍历列表,如果遍历到的帖子的作者的ID和列表的下一个帖子的作者ID相同,则有可能是水王,将ID记录,同时也将ID出现的次数记录,
(2)当遍历到的ID出现不相同时则将这两个ID都剔除
(3)如果记录的可能是水王的ID出现次数成为0,则寻找新的可能是水王的ID
代码实现
1 package demo3; 2 import java.util.Scanner; 3 public class WaterKing { 4 public static void main(String[] args) { 5 int[] a = null; 6 Scanner sc = new Scanner(System.in); 7 System.out.print("帖子总个数:"); 8 int sum = sc.nextInt(); 9 a = new int[sum]; 10 System.out.print("输入每个帖子的作者(ID):"); 11 for (int i = 0; i < sum; i++) { 12 a[i] = sc.nextInt(); 13 } 14 sc.close(); 15 int n = 0; 16 int nid = -1; 17 for (int i = 0; i < a.length - 1; i++) { 18 if (n == 0) { 19 if (a[i] == a[i + 1]) { 20 n = 2; 21 nid = a[i]; 22 } else { 23 if ((i + 1) == a.length - 1) { 24 nid = a[a.length - 1]; 25 } 26 } 27 i++; 28 } else { 29 if (nid == a[i]) { 30 n++; 31 } else { 32 n--; 33 } 34 } 35 } 36 System.out.print("水王的ID : " + nid); 37 } 38 }
实现截图
个人总结
刚开始写的时候,思路不对,后来和别人讨论的时候才知道自己想思考不全面,没有考虑到许多情况。对水王Id出现情况判断不准。
通过这次实验,使我加深了对特殊问题一般化,找到其中的规律等的理解