成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LintCode Fizz Buzz 只用一個(gè)if語句

greatwhole / 2495人閱讀

摘要:看了一些答案使用了多個(gè)這里給出幾種方案給大家參考下建立將所對(duì)應(yīng)的字符串分別映射,這樣一個(gè)即可對(duì)進(jìn)行優(yōu)化,只映射,這里需要一點(diǎn)數(shù)學(xué)技巧,大家看代碼就理解了利用的截?cái)喙δ軙簳r(shí)想到這些,歡迎指正

9.Fizz Buzz

Given number n. Print number from 1 to n. But:

when number is divided by 3, print "fizz".
when number is divided by 5, print "buzz".
when number is divided by both 3 and 5, print "fizz buzz".
Example

If n = 15, you should return:

[
"1", "2", "fizz",
"4", "buzz", "fizz",
"7", "8", "fizz",
"buzz", "11", "fizz",
"13", "14", "fizz buzz"
]

Challenge
Can you do it with only one if statement?

看了一些答案使用了多個(gè)if,這里給出幾種方案給大家參考下
1、建立HashMap,將3,6,9,12,5,10,0(i%15==0)所對(duì)應(yīng)的字符串分別映射,這樣一個(gè)if(map.containsKey(i%15))即可

     public static HashMap map = new HashMap<>();
     static{
         map.put(3,"fizz");
         map.put(6,"fizz");
         map.put(9,"fizz");
         map.put(12,"fizz");
         map.put(5,"buzz");
         map.put(10,"buzz");
         map.put(0,"fizz buzz");
     }
    public List fizzBuzz(int n) {
        List ret = new ArrayList<>();
        for(int i=1;i<=n;i++){
            int key = i%15;
            if(map.containsKey(key)){
                ret.add(map.get(key));
            }else{
                ret.add(""+i);
            }
        }
        return ret;
    }

2、對(duì)1進(jìn)行優(yōu)化,只映射3,5,8,這里需要一點(diǎn)數(shù)學(xué)技巧,大家看代碼就理解了

   public static HashMap map = new HashMap<>();
     static{
         map.put(3,"fizz");
         map.put(5,"buzz");
         map.put(8,"fizz buzz");
     }
    public List fizzBuzz(int n) {
        List ret = new ArrayList<>();
        for(int i=1;i<=n;i++){
            int key = f(i,3)+f(i,5);
            if(map.containsKey(key)){
                ret.add(map.get(key));
            }else{
                ret.add(""+i);
            }
        }
        return ret;
    }
    
    private int f(int i,int k){
        return (k-i%k)*((k-i%k)/k);
    }

3、利用&&的截?cái)喙δ?/p>

      public List fizzBuzz(int n) {
          List ret = new ArrayList<>(n);
            for(int i=1;i<=n;i++){
                String str = null;
                boolean bool1 = i%3==0&&(str="fizz")!=null;
                boolean bool2 = i%5==0&&(str="buzz")!=null&& i%3==0&&(str="fizz buzz")!=null;
                if(str==null){
                    ret.add(""+i);
                }else {
                    ret.add(str);
                }
            }
           
            return ret;
      }

暫時(shí)想到這些,歡迎指正

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77101.html

相關(guān)文章

  • [LintCode] Fizz Buzz

    Problem Given number n. Print number from 1 to n. But: when number is divided by 3, print fizz.when number is divided by 5, print buzz.when number is divided by both 3 and 5, print fizz buzz. Example ...

    gaara 評(píng)論0 收藏0
  • 算法Training——數(shù)學(xué)規(guī)律

    摘要:計(jì)算階乘中尾部零的個(gè)數(shù)描述計(jì)算出階乘中尾部零的個(gè)數(shù)樣例,故返回分析對(duì)數(shù)字做質(zhì)數(shù)分解,例如,可以知道能夠在尾部產(chǎn)生零的只有質(zhì)數(shù)和質(zhì)數(shù)的乘積由于是階乘,質(zhì)數(shù)的個(gè)數(shù)明顯大于質(zhì)數(shù)的個(gè)數(shù)特別需要注意的是,類似,數(shù)字里面是有的指數(shù)的因而,總的個(gè)數(shù)應(yīng)當(dāng)是 1.計(jì)算階乘中尾部零的個(gè)數(shù) 描述: 計(jì)算出n階乘中尾部零的個(gè)數(shù) 樣例: 11! = 39916800,故返回2 分析 對(duì)數(shù)字做質(zhì)數(shù)分解,例如2...

    lwx12525 評(píng)論0 收藏0
  • Leetcode PHP題解--D40 412. Fizz Buzz

    摘要:題目鏈接題目分析這個(gè)題目也很簡(jiǎn)單。從逐個(gè)輸出到給定數(shù)組,但逢輸出,逢輸出,逢輸出。思路沒什么好說的了。用整除判斷能否被分別整除或同時(shí)整除。然后替換要輸出的內(nèi)容即可。最終代碼若覺得本文章對(duì)你有用,歡迎用愛發(fā)電資助。 412. Fizz Buzz 題目鏈接 412. Fizz Buzz 題目分析 這個(gè)題目也很簡(jiǎn)單。 從1逐個(gè)輸出到給定數(shù)組,但逢3輸出Fizz,逢5輸出Buzz,逢15輸出F...

    tracymac7 評(píng)論0 收藏0
  • The Coding Kata: FizzBuzzWhizz in Java8

    摘要:匹配器是一個(gè)一元函數(shù),入?yún)?,返回值為,是一種典型的謂詞。執(zhí)行器也是一個(gè)一元函數(shù),入?yún)椋祷刂禐?,其本質(zhì)就是定制常見的操作,將定義域映射到值域。為一個(gè)工廠類,用于生產(chǎn)各種。其中,使用了的。 Functional programming leads to deep insights into the nature of computation. -- Martin Odersky 形式...

    張率功 評(píng)論0 收藏0
  • JS 使用短路原理簡(jiǎn)化條件語句代碼

    摘要:首先得介紹下短路原理,一共就以下四點(diǎn)非常關(guān)鍵只要前面為不管后面是還是,都返回后面的值。正常思路也是最簡(jiǎn)單的思路就是條件語句,如下結(jié)束但是代碼看起來非常的多,雖然方便閱讀,但是不方便裝逼啊使用短路原理大大精簡(jiǎn)條件語句代碼,如下怎么樣,就一行把 首先得介紹下短路原理,一共就以下四點(diǎn)(非常關(guān)鍵): 1、只要||前面為false,不管||后面是true還是false,都返回||后面的值。 2、...

    yuxue 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<