博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
寻找最水之王
阅读量:5343 次
发布时间:2019-06-15

本文共 946 字,大约阅读时间需要 3 分钟。

设计思路:水王发的帖子超过总帖子的一半是最关键的信息。而要求算法是O(n),所以不能用排序,那么我们只能遍历一次。把第一个id设为是水王,然后遍历所有的id,如果第i个id和上一个一样,就设一个参数加一,如果不一样,就减一,类似于消掉,将水王的id和其他的id消掉,那么遍历一遍剩下的,就肯定是水王的id。因为他超过总id的一半。

程序代码:

public static void main(String[] args) {		// TODO 自动生成的方法存根		 String a[]=new String[]{"a","r","b","b","c","a","d","r","r","a","r","a","r","r"};	        String b=a[0];	        int i=0,n=0;	        for(i=0;i<13;i++)	        {	            if(a[i]==b)	            {	                n=n+1;	            }	            else	            {	                n=n-1;	                if(n<0)	                {	                    b=a[i];	                    n=1;	                }	            }	        }	        System.out.print("水王为"+b);	    }			}

  实验截图:

实验反思。一开始并没有想到这个算法,经过高长直同学的讲解才明白。当时听到老师说类似于消消乐的算法,就有点明白,但是没有把水王的帖子超过一半这个条件给加进去。反而一直在消除上下功夫。还是对程序的认识不够深,在编程中,一定不要忽略题目给的条件,因为那可能是解决这个问题的钥匙 ,要充分考虑这个条件的意思。为什么给这个条件,他有什么用处。这样,编程才会事半功倍。

转载于:https://www.cnblogs.com/twentytwo/p/4537076.html

你可能感兴趣的文章
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
[HIHO1184]连通性二·边的双连通分量(双连通分量)
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
ViewBag & ViewData
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>