
目录
233. 数字 1 的个数 Number of Digit One 🌟🌟🌟
231. 2的幂 Power of Two
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。
示例 1:
输入:n = 1 输出:true 解释:20 = 1
示例 2:
输入:n = 16 输出:true 解释:24 = 16
示例 3:
输入:n = 3 输出:false
示例 4:
输入:n = 4 输出:true
示例 5:
输入:n = 5 输出:false
提示:
-2^31 <= n <= 2^31 - 1
进阶:你能够不使用循环/递归解决此问题吗?
代码1:位运算
package main
import "fmt"
func isPowerOfTwo(n int) bool {
if n <= 0 {
return false
}
return n&(n-1) == 0
}
func main() {
nums := []int{1, 16, 3, 4, 5}
for _, n := range nums {
fmt.Printf("%d 是2的幂次方:%t\n", n, isPowerOfTwo(n))
}
}
代码2:暴力迭代
package main
import "fmt"
func isPowerOfTwo(n int) bool {
if n == 0 {
return false
}
for n%2 == 0 {
n /= 2
}
return n == 1
}
func main() {
nums := []int{1, 16, 3, 4, 5}
for _, n := range nums {
fmt.Printf("%d 是2的幂次方:%t\n", n, isPowerOfTwo(n))
}
}
输出:
1 是2的幂次方:true
16 是2的幂次方:true
3 是2的幂次方:false
4 是2的幂次方:true
5 是2的幂次方:false
数学公式:
```
func isPowerOfTwo(n int) bool {
if n <= 0 {
return false
}
x := math.Log2(float64(n))
return x == math.Floor(x)
}
```
233. 数字 1 的个数 Number of Digit One
给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。
示例 1:
输入:n = 13 输出:6
示例 2:
输入:n = 0 输出:0
提示:
0 <= n <= 10^9
代码1:数字规律
package main
import "fmt"
func countDigitOne(n int) int {
count := 0
factor := 1
for factor <= n {
curr := (n / factor) % 10
high := n / (10 * factor)
low := n - (n/factor)*factor
if curr == 0 {
count += high * factor
} else if curr == 1 {
count += high*factor + low + 1
} else {
count += (high + 1) * factor
}
factor *= 10
}
return count
}
func main() {
fmt.Println(countDigitOne(13))
fmt.Println(countDigitOne(0))
}
代码2: 遍历计数
package main
import "fmt"
func countDigitOne(n int) int {
count := 0
for i := 1; i <= n; i++ {
count += countOne(i)
}
return count
}
func countOne(num int) int {
count := 0
for num > 0 {
if num%10 == 1 {
count++
}
num /= 10
}
return count
}
func main() {
fmt.Println(countDigitOne(13))
fmt.Println(countDigitOne(0))
}
输出:
6
0
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.youkuaiyun.com/
|
| Rust每日一练 专栏(2023.5.16~)更新中... |
|
| Golang每日一练 专栏(2023.3.11~)更新中... |
|
| Python每日一练 专栏(2023.2.18~2023.5.18)暂停更 |
|
| C/C++每日一练 专栏(2023.2.18~2023.5.18)暂停更 |
|
| Java每日一练 专栏(2023.3.11~2023.5.18)暂停更 |

文章提供了两个编程问题的解决方案:一是检查整数是否为2的幂次方,使用位运算和迭代两种方法;二是计算小于等于给定整数n的非负整数中数字1出现的次数,通过数字规律和遍历计数实现。此外,文章还提到了不同编程语言的每日一练专栏更新情况。





1212

被折叠的 条评论
为什么被折叠?



