LeetCode面試系列 第4天:No.202 - 快樂數



或許你不知道的是,Leetcode 中是有不少 數學題 的,本文要解析的題 快樂數 就是其中到一個典型問題,本題將基於數據結構 set 來求解。git

圖片

今天要給你們分析的面試題是 LeetCode 上第 202 號問題,面試

LeetCode - 202. 快樂數算法

https://leetcode-cn.com/problems/happy-number/數據結構


題目描述

編寫一個算法來判斷一個數是否是「快樂數」。app

一個「快樂數」定義爲:對於一個正整數,每一次將該數替換爲它每一個位置上的數字的平方和,而後重複這個過程直到這個數變爲 1,也多是無限循環但始終變不到 1。若是能夠變爲 1,那麼這個數就是快樂數。ide

示例:函數

輸入: 19輸出: true


解釋:測試



  • 貢獻者: LeetCodespa


  • 題目難度: Easy3d

  • 相關話題


相關話題


  • 哈希表

    https://leetcode-cn.com/tag/hash-table/


  • 數學

    https://leetcode-cn.com/tag/math


類似題目


  • 各位相加

    https://leetcode-cn.com/problems/add-digits/  難度: 簡單

  • 醜數

    https://leetcode-cn.com/problems/ugly-number/  難度: 簡單


解題思路:

中學數學中咱們學到一個概念集合(英文是set),集合的最大特色是元素不能重複。Python中,set是一組key的集合。

因而可使用迭代法和set這種數據結構來求解此題。

具體操做爲: 迭代地求給定數的各位數字的平方和,維護一個set,迭代循環的出口是平方和爲1或已在set中出現過。


AC的代碼爲:

 
 
  1. class Solution:

  2. def isHappy(self, n: int) -> bool:

  3.        unhappy = set()

  4. while n not in unhappy and n != 1:

  5.            unhappy.add(n)

  6.            n = self.GetSquareSum(n)

  7. return n == 1


  8. def GetSquareSum(self, n: int) -> bool:

  9.        sum0 = 0

  10. while n > 0:

  11.            r = n - int(n/10)*10

  12.            n = int(n/10)

  13.            sum0 += r * r

  14. return sum0


運行結果:

執行用時 : 36ms, 在全部 Python3 提交中擊敗了 99.72%的用戶


代碼要點:

  • Python 中 "/" 並非 C 語言中的 "/"(整除),Python 中 / 的結果是浮點數,若是須要獲得整數,需使用 "//",也可以使用 int() 函數來處理

  • Python的 同一個 class 中一個函數 a 調用另外一個函數 b,只需使用關鍵字 def 定義好函數 a 和 函數 b,在 a 中使用 self.b 便可


相應的,如需測試,本地可執行的代碼爲:

 
 
  1. class Solution:

  2. def isHappy(self, n: int) -> bool:

  3.        unhappy = set()

  4. while n not in unhappy and n != 1:

  5.            unhappy.add(n)

  6.            n = self.GetSquareSum(n)

  7. return n == 1


  8. def GetSquareSum(self, n: int) -> bool:

  9.        sum0 = 0

  10. while n > 0:

  11.            r = n - int(n/10)*10

  12.            n = int(n/10)

  13.            sum0 += r * r

  14. return sum0


  15. sol = Solution()

  16. print(sol.isHappy(19))


系列文章        

  第11天:Python 字典

第10天:Python 類與對象

第9天:Python Tupple

第8天:Python List

第7天:Python 數據結構--序列

第6天:Python 模塊和

第5天:Python 函數

第4天:Python 流程控制

第3天:Python 變量與數據類型

第2天:Python 基礎語法

第1天:Python 環境搭建

相關文章
相關標籤/搜索