From 583eb46e84a8694695ac19788258724080de2cfa Mon Sep 17 00:00:00 2001 From: Felipe Martin Date: Fri, 12 Aug 2022 12:10:36 +0200 Subject: [PATCH] exercise(leetcode): 202 --- leetcode/202-happy-number/README.md | 34 +++++++++++++++++++++++++++ leetcode/202-happy-number/solution.go | 26 ++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 leetcode/202-happy-number/README.md create mode 100644 leetcode/202-happy-number/solution.go diff --git a/leetcode/202-happy-number/README.md b/leetcode/202-happy-number/README.md new file mode 100644 index 0000000..6b7acd5 --- /dev/null +++ b/leetcode/202-happy-number/README.md @@ -0,0 +1,34 @@ +# 202. Happy number + +Write an algorithm to determine if a number `n` 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. +- 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. + +Return `true` if `n` is a happy number, and `false` if not. + +Example 1: + +``` +Input: n = 19 +Output: true +Explanation: +12 + 92 = 82 +82 + 22 = 68 +62 + 82 = 100 +12 + 02 + 02 = 1 +``` + +Example 2: + +``` +Input: n = 2 +Output: false +``` + +Constraints: + +- `1 <= n <= 231 - 1` diff --git a/leetcode/202-happy-number/solution.go b/leetcode/202-happy-number/solution.go new file mode 100644 index 0000000..9b8651b --- /dev/null +++ b/leetcode/202-happy-number/solution.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" +) + +func isHappy(n int) bool { + if n < 11 { + return n == 1 || n == 7 || n == 10 + } + + var number int + for n > 0 { + number += (n % 10) * (n % 10) + n /= 10 + } + + return isHappy(number) +} + +func main() { + fmt.Println(isHappy(2)) + fmt.Println(isHappy(7)) + fmt.Println(isHappy(10)) + fmt.Println(isHappy(19)) +}