/
githubmirror
/
LeetCode-Go
Обзор
Документация
Войти
/
githubmirror
/
LeetCode-Go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
leetcode/0476.Number-Complement/476. Number Complement.go
19 строк
618 B
YDZ
规范格式
07 авг 2020, 12:06
07 авг 2020, 12:06
4e11f40
Код
Авторство
О чём код?
package leetcode // 解法一 func findComplement(num int) int { xx := ^0 // ^0 = 1111111111111111111111 for xx&num > 0 { xx <<= 1 // 构造出来的 xx = 1111111…000000,0 的个数就是 num 的长度 } return ^xx ^ num // xx ^ num,结果是前面的 0 全是 1 的num,再取反即是答案 } // 解法二 func findComplement1(num int) int { temp := 1 for temp <= num { temp <<= 1 // 构造出来的 temp = 00000……10000,末尾 0 的个数是 num 的长度 } return (temp - 1) ^ num // temp - 1 即是前面都是 0,num 长度的末尾都是 1 的数,再异或 num 即是最终结果 }