题目要求:已知在一篇帖子中有一名“水王”,其发表帖子数目占全部的帖子数目的一半以上,现有一张表,找出该表中的“水王”。
表中具有id,id数目出现最多的就是水王。
我最开始一看到表就想起了从数据库中读取数据来进行操作。数据库中有相应的sql语句来实现相关的操作。即分组,在排序功能。
我写的算法:
package Week14; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.DBUtil.*; public class Tiezi { static DBUtil DBUtil =new DBUtil(); public static void main(String[] args) { shuiwang(); } public static void shuiwang() { String sql = "select nameid,count(*) AS num from tiezi GROUP BY nameid ORDER BY num DESC"; Connection conn = DBUtil.getConn(); Statement state = null; ResultSet rs = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while (rs.next()) { String nameid=rs.getString("nameid"); String num=rs.getString("num"); System .out.println(nameid+" "+num); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(rs, state, conn); } } }
我的这种算法并不是很好,经过老师提示以及题目中的数目是一半以上。得知可以将前两个数据的id相比如果相同就次数+1;不同判断次数是否>0,大于零则减一否则删除上面的数据,最后剩下的最后一个数据即为“水王”。