Golang每日一练(leetDay0069) 数字范围按位与、快乐数

简介: Golang每日一练(leetDay0069) 数字范围按位与、快乐数

201. 数字范围按位与 Bitwise-and-of-numbers-range


给你两个整数 leftright ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 leftright 端点)。


示例 1:

输入:left = 5, right = 7

输出:4


示例 2:

输入:left = 0, right = 0

输出:0


示例 3:

输入:left = 1, right = 2147483647

输出:0


提示:

   0 <= left <= right <= 2^31 - 1

代码:

func rangeBitwiseAnd(left int, right int) int {
    res := left
    for i := left + 1; i <= right; i++ {
        res &= i
    }
    return res
}
func rangeBitwiseAnd(left int, right int) int {
    shift := 0
    for left < right {
        left >>= 1
        right >>= 1
        shift++
    }
    return left << shift
}
func rangeBitwiseAnd(left int, right int) int {
    for left < right {
        right &= (right - 1)
    }
    return right
}

输出:


202. 快乐数 Happy Number


编写一个算法来判断一个数 n 是不是快乐数。


「快乐数」 定义为:


   对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。

   然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。

   如果这个过程 结果为 1,那么这个数就是快乐数。


如果 n 是 快乐数 就返回 true ;不是,则返回 false 。


示例 1:

输入:n = 19

输出:true

解释:

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1


示例 2:

输入:n = 2

输出:false


提示:

   1 <= n <= 2^31 - 1

代码:

func isHappy(n int) bool {
    for n != 1 && n != 4 {
        sum := 0
        for n > 0 {
            digit := n % 10
            sum += digit * digit
            n /= 10
        }
        n = sum
    }
    return n == 1
}
func isHappy(n int) bool {
    seen := make(map[int]bool)
    for n != 1 && !seen[n] {
        seen[n] = true
        sum := 0
        for n > 0 {
            digit := n % 10
            sum += digit * digit
            n /= 10
        }
        n = sum
    }
    return n == 1
}
func isHappy(n int) bool {
    slow, fast := n, n
    for {
        slow = digitSquareSum(slow)
        fast = digitSquareSum(fast)
        fast = digitSquareSum(fast)
        if slow == fast {
            break
        }
    }
    return slow == 1
}
func digitSquareSum(n int) int {
    sum := 0
    for n > 0 {
        digit := n % 10
        sum += digit * digit
        n /= 10
    }
    return sum
}



输出:




目录
打赏
0
0
0
0
74
分享
相关文章
|
10月前
|
Shell编程——弱数据类型的脚本语言快速入门指南
Shell编程——弱数据类型的脚本语言快速入门指南
120 0
Shell编程——弱数据类型的脚本语言快速入门指南
|
10月前
|
Linux 终端命令之文件浏览(2) more
Linux 终端命令之文件浏览(2) more
80 0
Linux 终端命令之文件浏览(2) more
Linux 终端操作命令(2)内部命令
Linux 终端操作命令(2)内部命令
113 0
Linux 终端操作命令(2)内部命令
|
10月前
|
力扣 C++|一题多解之动态规划专题(2)
力扣 C++|一题多解之动态规划专题(2)
104 0
力扣 C++|一题多解之动态规划专题(2)
|
10月前
|
Python Numpy入门基础(一)创建数组
Python Numpy入门基础(一)创建数组
114 0
Python Numpy入门基础(一)创建数组
|
10月前
|
Java语言程序设计试卷6套
Java语言程序设计试卷6套
976 0
Java语言程序设计试卷6套
|
10月前
|
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
98 0
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
141 0
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
|
10月前
|
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
83 0
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
|
10月前
|
Golang每日一练(leetDay0117) 打家劫舍III、比特位计数
Golang每日一练(leetDay0117) 打家劫舍III、比特位计数
77 0
Golang每日一练(leetDay0117) 打家劫舍III、比特位计数
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等