Golang leetcode 476. Number Complement.go

时间:2022-06-19
本文章向大家介绍Golang leetcode 476. Number Complement.go,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89175283

思路

如果我们能知道该数最高位的1所在的位置,就可以构造一个长度和该数据所占位置一样长的一个掩码mask,然后概述和mask进行异或即可。

code

func findComplement(num int) int {
	mask := 1
	tmp := num
	for tmp > 0 {
		mask <<= 1
		tmp >>= 1
	}
	return num ^ (mask - 1)
}