您的位置:首页 > 其它

找水王 多个水王

2016-05-25 20:56 435 查看
  这个找多个水王的问题我想了比较长的时间。让我有两个地方比较难想。因为我们是要用到前一个问题的思路,所以还是采用那种消除的方法来解决。这次水王有多个,想用以前的方法,需要把三个水王看成一个整体。遍历数组时只要当前元素和水王数组中的任何一个元素相同,相应的计数变量增加1。如果没有一个相同,计数变量都要减1。z这两个方面保证了三个水王是一个整体。难理解的是元素和水王数组中的任何一个都不相同的时候,水王数组的计数变量都要减1。代码是我看了别人的又重新写的。

package Arraysum;

public class FindWaterKing {
public static void main(String[] args)
{
//把id列表放到一个数组里面
int[] idNum = {1,8,1,6,9,6,7,6,6,1,5,5,1,7,6,5,5,6,5,5,1,1,6};
//水王数组
int[] waterKing = new int[3];
//水王数组数量的数组
int[] wkNum = new int[3];
//初始化水王数组和水王数量数组
for(int i = 0;i < 3;i++)
{
waterKing[i] = -1;
wkNum[i] = 0;
}
//查找三个水王的循环
for(int i = 0;i < idNum.length;i++)
{
//先检查一下当前水王数量数组中那个元素为0那个元素为0就把那个元素对应的水王值为当前idNum数组中的元素
if(wkNum[0] == 0)
{
waterKing[0] = idNum[i];
wkNum[0] = wkNum[0] + 1;
}
else if(wkNum[1] == 0)
{
waterKing[1] = idNum[i];
wkNum[1] = wkNum[1] + 1;
}
else if(wkNum[2] == 0)
{
waterKing[2] = idNum[i];
wkNum[2] = wkNum[2] + 1;
}
else if(idNum[i] == waterKing[0])
{
wkNum[0] = wkNum[0] + 1;
}
else if(idNum[i] == waterKing[1])
{
wkNum[1] = wkNum[1] + 1;
}
else if(idNum[i] == waterKing[2])
{
wkNum[2] = wkNum[2] + 1;
}
else
{
wkNum[0] = wkNum[0] - 1;
wkNum[1] = wkNum[1] - 1;
wkNum[2] = wkNum[2] - 1;
}
}
System.out.println("水王是:");
System.out.println(waterKing[0]+" "+waterKing[1]+" "+waterKing[2]);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: