作者:男人--沉默底线 | 来源:互联网 | 2023-10-12 09:44
设计思路:①跟上次思路一样,将问题简化成从一个数组中找出出现次数最多的3个数。②将“两两相消的思路模式,变成“三一相消”③初始化time为零,kingid为零,然后按顺序赋值,遇到跟ki
设计思路:
①跟上次思路一样,将问题简化成从一个数组中找出出现次数最多的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=0;i)
{
id[i] = input.nextInt();
}
input.close();
int kingid1=0;
int kingid2=0;
int kingid3=0;
int time1=0;
int time2=0;
int time3=0;
for(int i=0;i)
{
if(time1==0 && id[i]!=kingid2 && id[i]!=kingid3)
{
kingid1=id[i];
time1++;
}
else if(time2==0 && id[i]!=kingid1 && id[i]!=kingid3)
{
kingid2=id[i];
time2++;
}
else if(time3==0 && 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);
}
}
结果截图:
总结:
本次的课堂练习相比上次而言感觉差不太多,就是出现次数多的数由一个变为三个,所以依旧采取上次的思路来做就不是很难了。