问题的表述就是说有那么一个人,他在一个论坛上发帖,然后每贴必回,自己也发帖。那么这个人在发帖的数目上就超过了整个论坛的帖子数目的一半以上。

我对这个问题一开始的思路是,用SQL语句获取整个列表中的数据,每次用sql读取id出现次数List储存这个人的id,接着读取下一个id,若在list中存在则跳过。若发帖数大于数据/2则这个人是“水王”。

我在课上完成的代码如下,其中list是我定义的获取全部数据的一个sql函数:

ClassService service=new ClassService();
String []strList=new String[]{"no","id"};
@SuppressWarnings("unchecked")
List<People> people= (List<People>) service.list("reply",strList,new People().getClass());
List<String> ids=new ArrayList<String>();
int num=people.size();
int count=0;
for(int i=0;i<=num/2;i++)
{
String itId=people.get(i).getId();
if(ids.contains(itId))
continue;
String []strList1=new String[]{"id","no"};
String []strList2=new String[]{itId};
@SuppressWarnings("unchecked")
List<People> peopleTemp= (List<People>) service.search("reply",strList1,strList2,new People().getClass());
if(peopleTemp.size()>=people.size()/2)
{
System.out.println("水王是"+itId);
System.out.println("他的发帖数是"+peopleTemp.size());
break;
}
ids.add(itId);
}

要求二是对上述算法将复杂度降低到O(n),我在上课的期间并没有想到好的思路,原因在于:

要求1.不能定义变量,只要求一次循环便得出最后水王是谁。

我尝试利用list.add(list.remove())嵌套,可惜最终实验没有成功,也许是过于愚昧,并不能想出对应的解决思路。

同学的思路:定义两个变量(我感觉已经不符合题意了),然后在这个的基础上进行一次循环得出水王的值。

Java实验--关于课上找“水王”问题分析的更多相关文章

  1. (疯狂java)第四课(上)

    趁着周末玩爽了,兴致来了,继续玩玩java(估计再玩下去,就要被java玩了),第六章实在是很长,那就两个阶段来看吧. 1.java 7的增强包装类 这些包装类就是java上的基本类型,只不过人人基本 ...

  2. 20175316盛茂淞 2018-2019-2 《Java程序设计》第2周课上测试总结

    20175316 2018-2019-2 <Java程序设计>第2周课上测试总结 上周考试题目总结 题目1 题目要求: 在Ubuntu中用自己的有位学号建一个文件,教材p29 Exampl ...

  3. 20155205 《Java程序设计》0510课上实践博客

    20155205 <Java程序设计>0510课上实践博客 一.教材代码检查-p98 未提交成功原因: 一开始在iterm中运行,但是结果出错,没有时间提交了.这个提交其实很简单,没有提交 ...

  4. 第一次 在Java课上的编程

    第一次在java课上的编程(使用参数输入求和): 代码: public class He {    public static void main(String[] args)    {       ...

  5. 20155325 2017-2018 1 课上测试、课下作业、实验——码云&博客链接汇总 《信息安全系统设计基础》

    第二周-课上 码云 https://gitee.com/bestiisjava2017/XinXiAnQuanXiTongSheJiJiChu20155325thl/tree/master/0927 ...

  6. Java 课上的语录

    Java 课上的语录 在用系统类库的类的时候啊,你是不是充分的理解这个系统类库的类.比如这个 ArrayList 你是不是知道它里面有这样那样这样那样的函数,能够帮你做各种各样的事情.很重要,你不知道 ...

  7. mapreduce课上实验

    今天我们课上做了一个关于数据清洗的实验,具体实验内容如下: 1.数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中: 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (v ...

  8. 关于转入软件工程专业后第二次java课上作业的某些体会

    今天是第二周的java课. 自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程.不得不说过程很艰辛.今天下午老师让编写一个随机产生作业的软件.而我的基础差到都不知道如何 ...

  9. 20165305 苏振龙《Java程序设计》第八周课上测试补做

    1. 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截图 2. ...

随机推荐

  1. STM32CUBEMX入门学习笔记1:软件的简单介绍

    STM32CUBEMX是ST公司设计的一款免费软件,软件可以通过其官网下载.现在已经下载到.通过STM32CUBEMX可以完成从单片机选型,程序初始化,中断配置……工作.并生成对应的"HAL ...

  2. python基础之文件处理总结

    读文件: with open('contacts.txt', 'r', encoding='utf-8') as f: data = f.read() 二进制模式读 使用场景:网络传输(视频.图片或进 ...

  3. nrf52裸机学习——GPIO操作

    /** * @brief Function for writing a value to a GPIO pin. * * Note that the pin must be configured as ...

  4. 网络流之Dinic算法

    初学网络流.存一下Dinic板子. 复杂度O(n^2*m) UVA - 1515 Pool construction 把每个草地与 S 相连,花费为dig,每个洞与 T 相连,花费为 然后对于每个两个 ...

  5. ACM-ICPC 2015 Shenyang Preliminary Contest B. Best Solver

    The so-called best problem solver can easily solve this problem, with his/her childhood sweetheart. ...

  6. SQL_3_表达式、条件语句与运算

    加号的两种用法: 1.在SELECT子句中使用+号以执行对数据的运算并将结果显示出来. SELECT ITEM WHOLESALE WHOLESALE+0.15 FROM PRICE; 还可以重命名新 ...

  7. 记一次WMS的系统改造(1)-分析问题

    海外落地中的困境 目前面临主要的问题是"人",仓储系统主要辅助仓储人员进行生产,所以人变了其实一切就都已经变了,系统在海外面临最大的问题就是人变了. 这套软件是在国内的运营体系 ...

  8. hdu 5444 构建二叉树,搜索二叉树

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  9. HDU——1405The Last Practice(试手map)

    The Last Practice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  10. BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】

    题解 我们设f[i]表示前i个数模M意义下的答案 则f[i] = f[i - 1] * 100...0 + i[i是几位就有几个0] 可以写出矩阵递推式: 之后按位数分组矩乘就好了 #include& ...