首页 > 解决方案 > 奇怪的计数器 - HackerRank

问题描述

这是问题的链接: https ://www.hackerrank.com/challenges/strange-code/problem

static long strangeCounter(long t) {
        long i,c=1;
        long cl=2;
        HashMap<Long,Long> map = new HashMap<Long,Long>();
        while(c>t){
            if(cl<3){
                cl=3;
            }else{
                cl=cl*2;
            }
            for(i=cl;i>0;i--){
                map.put(c,cl);
                c++;
                //if(c>t) break;
            }
        }
        System.out.println(map); //For debug... It is printing {} 
        return map.get(t);
    }

当我试图将时间计数器存储在地图中时,此哈希图显示为 null。为什么显示为空?

标签: java

解决方案


地图不为空,它是空的。地图是空的,因为里面没有放任何东西。

  • 如果该值为t1 或更大,那么您永远不会进入while 循环。这会产生一个空地图。

  • 如果值为t0(或更小),您将永远不会产生答案,因为 while 循环将永远不会(优雅地)结束,因为您只会增加c并且t永远不会改变。


推荐阅读