<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)202:快樂(lè)數(shù)

          共 2120字,需瀏覽 5分鐘

           ·

          2021-03-07 19:12

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問(wèn)題叫做 快樂(lè)數(shù),我們先來(lái)看題面:
          https://leetcode-cn.com/problems/happy-number/

          Write an algorithm to determine if a number n is happy.

          題意


          編寫(xiě)一個(gè)算法來(lái)判斷一個(gè)數(shù) n 是不是快樂(lè)數(shù)。
          「快樂(lè)數(shù)」定義為:
          對(duì)于一個(gè)正整數(shù),每一次將該數(shù)替換為它每個(gè)位置上的數(shù)字的平方和。
          然后重復(fù)這個(gè)過(guò)程直到這個(gè)數(shù)變?yōu)?1,也可能是 無(wú)限循環(huán) 但始終變不到 1。
          如果 可以變?yōu)?nbsp; 1,那么這個(gè)數(shù)就是快樂(lè)數(shù)。
          如果 n 是快樂(lè)數(shù)就返回 true ;不是,則返回 false 。

          示例


          示例 1

          輸入:19
          輸出:true
          解釋:
          12 + 92 = 82
          82 + 22 = 68
          62 + 82 = 100
          12 + 02 + 02 = 1

          示例 2

          輸入:n = 2
          輸出:false


          解題

          對(duì)于所有數(shù)字,會(huì)有三種情況
          1. 快樂(lè)數(shù)
          2. 無(wú)限循環(huán)不快樂(lè)數(shù)
          3. 無(wú)限不循環(huán)不快樂(lè)數(shù)
          其中,不循環(huán)不快樂(lè)書(shū)不是絕對(duì)不循環(huán),比如 2 , 算算就知道一直會(huì)在 4 之后循環(huán). 但是 4 就會(huì)在本身開(kāi)始, 循環(huán).

          思路:建立 set 表,每次得到的數(shù)值都需要查閱是否出現(xiàn)過(guò),出現(xiàn)過(guò)就說(shuō)明死循環(huán)了

          class Solution {
              private int getNext(int n) {
                  int totalSum = 0;
                  while (n > 0) {
                      int d = n % 10;
                      n = n / 10;
                      totalSum += d * d;
                  }
                  return totalSum;
              }

              public boolean isHappy(int n) {
                  Set<Integer> seen = new HashSet<>();
                  while (n != 1 && !seen.contains(n)) {
                      seen.add(n);
                      n = getNext(n);
                  }
                  return n == 1;
              }
          }


          好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

          上期推文:
          LeetCode1-200題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)201:數(shù)字范圍按位與

          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美一级成人网站 | 疯狂做爰XXXⅩa久久久久久 | 国产精品啪啪啪 | 91探花精品偷拍在线播放 | 黄色在线视频免费观看 |