面试题:有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

今天去面试,上海某家公司,由于中午去得有点早,其实也不是早,是hr跟我约得是13点,然后我12点50多到的,前台跟我说,他们还没有上班,况且和我约的不是13点半吗?我拿出手机给他看确实是13点,她说让我等一下,我就在那等,看见到13点的时候他们的企业文化来了,一群程序员在办公室理做起了广播体操,跑起了圈。。。,这样的企业文化真是“别致”,然后一顿操作昨晚以后叫我直接去机试。最后一个面试题就是标题上这个题,因为前面最快排序算法的原因浪费时间的原因,这题没做,但是写了思路,然后给我见检查的是那个不懂技术的hr。。。冤家路窄,最后那题我跟她说我思路,我说完以后,她说你结果没出来就是不对。我和她说但是我思路没有问题啊,她又重复了一句,结果没出来就是不对。好吧,我好像开始意识到产品经理和程序员为什么是天敌了。就直接让我走了。
回来以后写了下,贴一下代码:

public class M1 {

    public static void main(String[] args) {
        int[] arr = new int[10];

        //给数组初始化
        for(int i = 0 ; i < 10 ;i++){
            arr[i]=i+1;
        }


        int temp=0;//用来计数1---3
        int people = 10;//刚开始的人数
        int index = 0;
        while(people>1){

            if(arr[index]!=0){//不等于0,说明这个人还没有被淘汰
                temp++;//没被淘汰的参与报数
            }
            if(temp==3){
                arr[index]=0;//等于0,代表出局
                temp=0;//重新开始计数
                people--;//参与人数减一

            }
            index++;
            if(index==10){
                index=0;//让数组重新开始遍历
            }

        }
        for(int i = 0 ; i < 10 ; i++){
            if(arr[i]!=0){
                System.out.println(arr[i]);//输出最后那个人
            }
        }
    }
}

结果为:4

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值