设计思路:

①跟上次思路一样,将问题简化成从一个数组中找出出现次数最多的3个数。

②将“两两相消"的思路模式,变成“三一相消”

③初始化time为零,kingid为零,然后按顺序赋值,遇到跟kingid1相同的time1+1,其余两个同样;遇到跟三个都不同的所有time-1。

代码:

import java.util.*;

public class Findthreenum {

    public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入数组的长度:");
int length = input.nextInt();
int[] id = new int[length];
System.out.println("请输入数组:");
for(int i=;i<length;i++)
{
id[i] = input.nextInt();
}
input.close(); int kingid1=;
int kingid2=;
int kingid3=;
int time1=;
int time2=;
int time3=; for(int i=;i<length;i++)
{
if(time1== && id[i]!=kingid2 && id[i]!=kingid3)
{
kingid1=id[i];
time1++;
}
else if(time2== && id[i]!=kingid1 && id[i]!=kingid3)
{
kingid2=id[i];
time2++;
}
else if(time3== && id[i]!=kingid1 && id[i]!=kingid2)
{
kingid3=id[i];
time3++;
}
else if(id[i]!=kingid1 && id[i]!=kingid2 && id[i]!=kingid3)
{
time1--;
time2--;
time3--;
}
else if(id[i]==kingid1)
{
time1++;
}
else if(id[i]==kingid2)
{
time2++;
}
else if(id[i]==kingid3)
{
time3++;
}
} System.out.println("水王分别是:" + kingid1 + "," + kingid2 + "," + kingid3); } }

结果截图:

总结:

本次的课堂练习相比上次而言感觉差不太多,就是出现次数多的数由一个变为三个,所以依旧采取上次的思路来做就不是很难了。

最新文章

  1. 使用&lt;c:if&gt;标签处理页面数据
  2. poj3341
  3. js 给样式添加随机颜色
  4. paip.批处理清理java项目冗余jar的方法
  5. NPTL 线程同步方式
  6. python之域与属性
  7. 为Elasticsearch添加中文分词
  8. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
  9. 用C实现一个简单的对拍器——致每个曾经为求AC披星戴月的程序员们
  10. [ZooKeeper] 2 环境搭建
  11. sqlserv 配置 CLR
  12. day11 函数的位置形参,位置实参,可变长位置形参,关键字形参
  13. HttpClient官方sample代码的深入分析(连接池)
  14. solr使用cursorMark做深度分页
  15. 初识kibana
  16. Potplayer快捷键
  17. Luogu1801_黑匣子_KEY
  18. TensorFlow(实战深度学习框架)----深层神经网络(第四章)
  19. 99. Recover Binary Search Tree (Tree; DFS)
  20. Oracle字符编码与汉字存储长度的处理

热门文章

  1. Python的交互模式和命令行模式
  2. TLD视觉跟踪算法
  3. flask之flask_bootstrap
  4. UITableView常见用法以及注意细节
  5. [转载]linux内核中的HZ介绍
  6. Java-API:java.util.Date
  7. HTTP请求常见错误大全
  8. [phonegap]安装升级
  9. 线性表的链式存储——C语言实现
  10. PHP函数(六)-匿名函数(闭包函数)