609 次浏览
示例假设我们有如下二叉树。先序遍历输出:1, 2, 4, 5, 3, 6, 7。解决方法步骤1 - 如果给定树的根节点为空,则返回;否则,按照以下步骤操作。步骤2 - 打印根节点数据。步骤3 - 遍历左子树。步骤4 - 遍历右子树。示例 在线演示package main import "fmt" type Node struct { data int left *Node right *Node } func (root *Node)PreOrderTraversal(){ if root !=nil{ fmt.Printf("%d ", root.data) root.left.PreOrderTraversal() root.right.PreOrderTraversal() ... 阅读更多
266 次浏览
示例例如,arr = [1, 4, 5, 1, 4, 5, 1] => 数组中出现次数为奇数的元素是:1解决方法步骤1 - 定义一个接受数组的方法。步骤2 - 声明一个异或变量,即 xor := 0。步骤3 - 迭代输入数组并对数组的每个元素执行异或运算。步骤4 - 最后,返回 xor。示例 在线演示package main import ( "fmt" ) func FindOddOccurringElement(arr []int) int{ xor := 0 for i := 0; i < len(arr); i++ { xor = xor ^ arr[i] } return ... 阅读更多
174 次浏览
示例例如,n = 12 => 12 不是 4 的幂。例如,n = 64 => 64 是 4 的幂。解决方法步骤1 - 定义一个接受数字 n 的方法。步骤2 - 将 log(n) 除以 log(4),存储在 res 中。步骤3 - 如果 res 的地板与 res 相同,则打印 n 是 4 的幂。步骤4 - 否则,打印 n 不是 4 的幂。示例 在线演示package main import ( "fmt" "math" ) func CheckPowerOf4(n int){ res := math.Log(float64(n)) / math.Log(float64(4)) if ... 阅读更多
148 次浏览
示例例如,n = 12 => 前一个 2 的幂是 8。例如,n = 20 => 前一个 2 的幂是 16。解决方法步骤1 - 定义一个接受数字 n 的方法。步骤2 - 执行 n | (n >> k),其中 k 为 1、2、4、8、16。步骤3 - 最后,返回 n - (n >> 1)。示例 在线演示package main import "fmt" func PreviousPowOf2(n int) int{ n = n | (n >> 1) n = n | (n >> 2) n = n | (n >> 4) n ... 阅读更多
473 次浏览
示例例如,n = 12 => 下一个 2 的幂是 16。例如,n = 20 => 下一个 2 的幂是 32。解决方法步骤1 - 定义一个接受数字 n 的方法。步骤2 - 迭代 k := 1 直到 k < n。步骤3 - 在循环中,计算 k
181 次浏览
示例例如,x = 12,y = 15 => 最大数是 15。例如,x = 13,y = 17 => 最小数是 13。解决方法步骤1 - 定义方法 findMax 和 findMin,它们接受两个整数 x 和 y。步骤2 - 根据定义的方法返回整数。示例 在线演示package main import "fmt" func FindMax(x, y int){ fmt.Printf("最大元素 %d 和 %d 是:%d", x, y, x - ((x - y) & ((x - y) >> 31))) } func FindMin(x, y int) { fmt.Printf("最小元素 %d 和 %d 是:%d", x, y, y ... 阅读更多
2K+ 次浏览
示例例如,101、11、11011 和 1001001 设置位数分别为 2、2、4 和 3。解决方法步骤1 - 将数字转换为二进制表示。步骤2 - 计算 1 的个数;返回计数。示例 在线演示package main import ( "fmt" "strconv" ) func NumOfSetBits(n int) int{ count := 0 for n !=0{ count += n &1 n >>= 1 } return count } func main(){ n := 20 fmt.Printf("20 的二进制表示为:%s。", strconv.FormatInt(int64(n), 2)) fmt.Printf("20 中设置位的总数为 %d。", n, NumOfSetBits(n)) }输出20 的二进制表示为:10100。20 中设置位的总数为 2。
197 次浏览
示例例如,101、11、11011、1001001 是回文。100、10010 不是回文。解决方法步骤1 - 将数字转换为二进制表示。步骤2 - 从两侧遍历转换后的二进制表示,并检查表示是否为回文。示例 在线演示package main import ( "fmt" "strconv" ) func IsPalindrome(n int) bool{ rev := 0 k := n for k != 0 { rev = (rev > 1 } return n == rev } func main(){ n := 3 fmt.Printf("3 的二进制表示为:%s。", strconv.FormatInt(int64(n), 2)) if IsPalindrome(n) == true{ fmt.Println("回文") } else { fmt.Println("不是回文") } }输出3 的二进制表示为:11。回文
102 次浏览
示例考虑两个数字 m = 65 => 01000001 和 n = 80 => 01010000翻转的位数为 2。解决方法步骤1 - 将两个数字都转换为位。步骤2 - 计算翻转的位数。示例 在线演示package main import ( "fmt" "strconv" ) func FindBits(x, y int) int{ n := x ^ y count := 0 for ;n!=0; count++{ n = n & (n-1) } return count } func main(){ x := 65 y := 80 fmt.Printf("65 的二进制为:%s。", strconv.FormatInt(int64(x), 2)) ... 阅读更多
818 次浏览
在 Go 语言中,我们可以使用二元运算符“&”(AND)和“|”(OR)将字符串从大写转换为小写,反之亦然。让我们来看一个简单的例子,了解如何在 Go 语言中使用这些二元运算符。 示例package main import "fmt" func main(){ fmt.Printf("使用 OR 运算符的小写字符:") for ch:='A'; ch