Golang每日一练(leetDay0112) 2、3、4的幂

简介: Golang每日一练(leetDay0112) 2、3、4的幂

326. 3的幂 Power of Three

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x

示例 1:

输入:n = 27

输出:true


示例 2:

输入:n = 0

输出:false


示例 3:

输入:n = 9

输出:true


示例 4:

输入:n = 45

输出:false


提示:

  • -2^31 <= n <= 2^31 - 1

进阶:你能不使用循环或者递归来完成本题吗?

代码1:整数限制

基于 3^19 是整数范围内最大的3的幂次方,3^19 = 1162261467

package main
import "fmt"
func isPowerOfThree(n int) bool {
  return n > 0 && 1162261467%n == 0
}
func main() {
  nums := []int{27, 0, 9, 45}
  for _, n := range nums {
    fmt.Printf("%d 是3的幂次方:%t\n", n, isPowerOfThree(n))
  }
}

代码2:

package main
import (
  "fmt"
  "math"
)
func isPowerOfThree(n int) bool {
  if n <= 0 {
    return false
  }
  for n%3 == 0 {
    n /= 3
  }
  return n == 1
}
func main() {
  nums := []int{27, 0, 9, 45}
  for _, n := range nums {
    fmt.Printf("%d 是3的幂次方:%t\n", n, isPowerOfThree(n))
  }
}

输出:

27 是3的幂次方:true

0 是3的幂次方:false

9 是3的幂次方:true

45 是3的幂次方:false

数学公式:

func isPowerOfThree3(n int) bool {
    if n <= 0 {
        return false
    }
    x := math.Log(float64(n)) / math.Log(3)
    return math.Abs(math.Floor(x)-x) < 1e-10
}

342. 4的幂 Power of Four

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x

示例 1:

输入:n = 16

输出:true


示例 2:

输入:n = 5

输出:false


示例 3:

输入:n = 1

输出:true


提示:

  • -2^31 <= n <= 2^31 - 1

进阶:你能不使用循环或者递归来完成本题吗?

代码:

package main
import "fmt"
func isPowerOfFour(n int) bool {
  if n <= 0 {
    return false
  }
  if n&(n-1) != 0 { // 判断是否只有一个1
    return false
  }
  return n&0x55555555 != 0 // 判断1的位置是否为奇数位
}
func main() {
  nums := []int{16, 5, 1}
  for _, n := range nums {
    fmt.Printf("%d 是4的幂次方:%t\n", n, isPowerOfFour(n))
  }
}

输出:

16 是4的幂次方:true

5 是4的幂次方:false

1 是4的幂次方:true

数学公式法:

还是判断x = log(n) / log(4)是否为整数


相关链接

231. 2的幂 Power of Two  🌟

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false

如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1

输出:true

解释:2^0 = 1


示例 2:

输入:n = 16

输出:true

解释:2^4 = 16


示例 3:

输入:n = 3

输出:false


示例 4:

输入:n = 4

输出:true


示例 5:

输入:n = 5

输出:false


提示:

  • -2^31 <= n <= 2^31 - 1

进阶:你能够不使用循环/递归解决此问题吗?

链接:2的幂 Power of Two


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力!

🌟 收藏,你的青睐是我努力的方向!

评论,你的意见是我进步的财富!  

主页:https://hannyang.blog.csdn.net/

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)暂停更


目录
相关文章
|
1天前
|
存储 Java C++
Java虚拟机(JVM)在执行Java程序时,会将其管理的内存划分为几个不同的区域
【6月更文挑战第24天】Java JVM管理内存分7区:程序计数器记录线程执行位置;虚拟机栈处理方法调用,每个线程有独立栈;本地方法栈服务native方法;Java堆存储所有对象实例,垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息;运行时常量池存储常量;直接内存不属于JVM规范,通过`java.nio`手动管理,不受GC直接影响。
11 5
|
1天前
|
算法 Java
垃圾回收机制(Garbage Collection,GC)是Java语言的一个重要特性,它自动管理程序运行过程中不再使用的内存空间。
【6月更文挑战第24天】Java的GC自动回收不再使用的内存,关注堆中的对象。通过标记-清除、复制、压缩和分代等算法识别无用对象。GC分为Minor、Major和Full类型,针对年轻代、老年代或整个堆进行回收。性能优化涉及算法选择和参数调整。
13 3
|
1天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
10 2
|
1天前
|
人工智能 Java BI
Java程序代码实现的实例总结
Java程序代码实现的实例总结
|
1天前
|
人工智能 算法 搜索推荐
Java算法编程详解和程序实例
Java算法编程详解和程序实例
|
1天前
|
Java
java使用多线程编写服务端与客户端文件上传程序
java使用多线程编写服务端与客户端文件上传程序
4 0
|
1天前
|
Java
使用java文件过滤器输出制定格式文件路径
使用java文件过滤器输出制定格式文件路径
4 0
|
1天前
|
Java 测试技术 Spring
Java反射包:java.lang.reflect的神奇功能与实战技巧
Java反射包:java.lang.reflect的神奇功能与实战技巧
|
1月前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
113 0
|
1月前
|
前端开发 Go
Golang深入浅出之-Go语言中的异步编程与Future/Promise模式
【5月更文挑战第3天】Go语言通过goroutines和channels实现异步编程,虽无内置Future/Promise,但可借助其特性模拟。本文探讨了如何使用channel实现Future模式,提供了异步获取URL内容长度的示例,并警示了Channel泄漏、错误处理和并发控制等常见问题。为避免这些问题,建议显式关闭channel、使用context.Context、并发控制机制及有效传播错误。理解并应用这些技巧能提升Go语言异步编程的效率和健壮性。
58 5
Golang深入浅出之-Go语言中的异步编程与Future/Promise模式