课堂练习--“找水王续"

设计思路:

①跟上次思路一样,将问题简化成从一个数组中找出出现次数最多的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<length;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<length;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);

    }

}

结果截图:

总结:

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

转载于:https://www.cnblogs.com/lk0823/p/5533184.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值