java吧 关注:1,295,203贴子:12,828,259

回复:今天碰见的面试题大佬来解答一下

只看楼主收藏回复

写个方法重头开始比较,后一个比前一个小,就互换,循环:如果后一个比前一个大就直接在回调下本方法,当然也可以用冒泡


IP属地:上海来自iPhone客户端45楼2017-08-25 19:51
回复
    二进制


    来自Android客户端46楼2017-08-25 22:15
    回复
      2026-01-20 06:41:18
      广告
      不感兴趣
      开通SVIP免广告
      这还不好思考?就是二进制,两个人打,失败者不能再和别人打,就是被淘汰,就是除以2,再除2,就是二进制,如果输的人都要和其他每个人打一次,这还有什么意义


      来自Android客户端47楼2017-08-25 22:17
      回复
        1000除以2,500,500除以2,250,250除以2,125,125+1除以2,63,62除以2,31,32除以2,16,,16除以2,8,8除以2,4,4除以2,2,2除以2,等于11,答案是,500+250+125+63+31+16+8+4+2+1等于10001000除以2,500,500除以2,250,250除以2,125,125+1除以2,63,62除以2,31,32除以2,16,,16除以2,8,8除以2,4,4除以2,2,2除以2,等于11,答案是,500+250+125+63+31+16+8+4+2+1等于1000


        来自Android客户端48楼2017-08-25 22:23
        回复
          其实也不用我这么算,


          来自Android客户端49楼2017-08-25 22:24
          回复
            上面是正常思维,下面我讲一下特别思维,既然1001个人,只有一个胜者,那么所有人的水平,绝对没有相等的,例如其中有a,b,c,三个人,a>b,b>c,是不是很自然,a>c?既然1001个人实力没相等的,那么只有一个人胜利,那么,相当于他打1000把!为什么?就像上面说的,我比你强,你比他强,你打败了别人,是不是等于我打败了别人?而且只要淘汰1000个人,就能出最强者,我不管你们之间怎么打,反正我是最强者,你打败别人,就相当于我打败别人!然后决胜出第一名,必要条件是1000个人被打败!就当作我一个人,打败他们1000次就ok了!


            来自Android客户端50楼2017-08-25 22:28
            回复
              昨天看到想都没想就回答了,回去理了理,写了如下代码,答案就是1000,楼上果然都是大佬,当然作为一道思维题大佬们的逻辑解释通俗易懂,每场比赛少一个,
              就是n-1场比赛了
              public static void main(String[] args) {
              fun(1001);
              }
              public static void fun(int x){
              int y = 0;
              boolean flag = false;
              while(!flag){
              y+=(int)Math.floor(x/2.0);
              x=(int) Math.ceil(x/2.0);
              if (x==1) {
              flag=true;
              }
              }
              System.out.println(y);
              }


              IP属地:安徽51楼2017-08-25 23:32
              回复
                冒泡排序啊


                IP属地:广西来自Android客户端52楼2018-03-26 19:18
                回复
                  2026-01-20 06:35:18
                  广告
                  不感兴趣
                  开通SVIP免广告
                  这题逆向思维想,如果你想成为最厉害的,你需要击败多少人?1001-1(你自己)=1000,你需要击败1000人才是最厉害的,所以需要1000场!
                  因为是淘汰赛,假如你是a,还有,b,c,d三个转手。
                  a与b较量,c与d较量。
                  a(你自己)击败b。一场
                  c击败d。一场
                  a击败c。一场
                  四个人中a最厉害,进行了3场比赛,依次类推。
                  1001人中,你要最厉害,你需要击败1000人,进行1000场比赛!


                  IP属地:浙江来自Android客户端53楼2018-03-26 19:26
                  回复
                    做为一个7级萌新[小乖] ,我发誓,等我水到8就洗心革面重新做人 ,不要告诉我已经9级了,我看得见


                    IP属地:江苏来自iPhone客户端54楼2019-05-28 22:04
                    回复