leetcode-【簡單題】Happy Number

來源:互聯網
上載者:User

標籤:

題目:

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

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

  • 1^2 + 9^2 = 82
  • 8^2 + 2^2 = 68
  • 6^2 + 8^2 = 100
  • 1^2 + 0^2 + 0^2 = 1

連結:

https://leetcode.com/problems/happy-number/

答案:

暴力解決,直接給每個數的每位計算平方和就行,然後把中間的數都記錄下來,如果下次出現這個數,就是loop了。

代碼:

 1 #include<vector> 2  3 using std::vector; 4  5 class Solution { 6 private: 7     vector<int> med; 8      9     bool inMed(int n)10     {11         vector<int>::iterator beg;12         for(beg = med.begin(); beg != med.end(); ++ beg)13         {14             if(*beg == n)15             {16                 return true;17             }18         }19         20         return false;21     }22     23     int sum(int n)24     {25         int s = 0;26         while(n != 0)27         {28             int modn = n % 10;29             s += modn * modn;30             n = n /10;31         }32         33         return s;34     }35     36 public:37     bool isHappy(int n) 38     {39         if(n == 1 || n == 19 || n == 13 || n == 10)40         {41             return true;42         }43         44         med.clear();45         med.push_back(n);46         47         int result = n;48         bool isLoop = false;49         while( result != 1)50         {51             result = sum(result);52             if(result != 1 && inMed(result))53             {54                 isLoop = true;55                 break;56             }57             58             med.push_back(result);59         }60         61         return !isLoop;62     }63 };
View Code

代碼中的isHappy()方法的最開頭我是隨便加了幾個判斷,哈哈,題目中給出的快樂數應該會在背景測試資料中。

leetcode-【簡單題】Happy Number

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.