设计思想:
顺序遍历这个列表,如果遍历到的帖子的作者的ID和列表的下一个帖子的作者ID相同,则有可能是水王,将ID记录,同时也将ID出现的次数记录,当遍历到的ID出现不相同时则将这两个ID都剔除(即将记录可能是水王的ID的出现次数减一,遍历到的下一个的ID跳过),如果记录的可能是水王的ID出现次数成为0,则寻找新的可能是水王的ID,最终记录的ID即为水王的ID
代码实现:
package zuoYe; import java.util.Scanner; /* * 寻找水王 */ public class ShuiWang2 { public static void main(String[] args) { int[] a = null;//存储帖子id Scanner sc = new Scanner(System.in); System.out.println("帖子总个数:"); int sum = sc.nextInt(); a = new int[sum]; System.out.println("输入每个帖子的作者:"); for(int i = 0;i < sum;i++) { a[i] = sc.nextInt(); } sc.close(); int n = 0; int nid = -1; for(int i = 0;i < a.length - 1;i++) { if(n == 0) { if(a[i] == a[i + 1]) { n = 2; nid = a[i]; } else {
if((i + 1) == a.length - 1) { nid = a[a.length - 1]; } }
i++; } else { if(nid == a[i]) { n++; } else { n--; } } } System.out.println("水王的ID : " + nid); } }
个人总结:
解决问题要找到规律,这样解决问题才能高效,按照原始方法虽然能够解决问题,但是效率大打折扣。