1 回答
TA贡献1815条经验 获得超6个赞
您要查找的教科书是
Go 编程语言规范
数值类型
数字类型表示整数或浮点值的集合。预先声明的独立于体系结构的数字类型是:
uint32 set of all unsigned 32-bit integers (0 to 4294967295)
uint64 set of all unsigned 64-bit integers (0 to 18446744073709551615)
int32 set of all signed 32-bit integers (-2147483648 to 2147483647)
int64 set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
还有一组预先声明的数字类型,具有特定于实现的大小:
uint either 32 or 64 bits
int same size as uint
检查类型的大小int。在 Go Playground 上,它是 4 个字节或 32 位。
package main
import (
"fmt"
"runtime"
"unsafe"
)
func main() {
fmt.Println("arch", runtime.GOARCH)
fmt.Println("int", unsafe.Sizeof(int(0)))
}
游乐场:https://play.golang.org/p/2A6ODvhb1Dx
输出(游乐场):
arch amd64p32
int 4
在您的 (LeetCode) 环境中运行该程序。它可能是 8 个字节或 64 位。
例如,在我的环境中,
输出(本地):
arch amd64
int 8
以下是对您的代码的一些修复,
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println(runtime.GOARCH)
fmt.Printf("%v\n", singleNumber([]int{-2, -2, 1, 1, -3, 1, -3, -3, -4, -2}))
}
func singleNumber(nums []int) int {
sum := make([]int, 64)
for _, v := range nums {
for i := range sum {
sum[i] += 1 & (v >> uint(i))
}
}
res := 0
for k, v := range sum {
if (v % 3) != 0 {
res |= (v % 3) << uint(k)
}
}
fmt.Printf("res %+v\n", res)
return res
}
游乐场:https://play.golang.org/p/kaoSuesu2Oj
输出(游乐场):
amd64p32
res -4
-4
输出(本地):
amd64
res -4
-4
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报