From b8de092331d8050f5b587f667ab1527c5187d390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <14021051@buaa.edu.cn> Date: Tue, 30 Oct 2018 21:39:42 +0800 Subject: [PATCH] Create 476. Number Complement.md --- 476. Number Complement.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 476. Number Complement.md diff --git a/476. Number Complement.md b/476. Number Complement.md new file mode 100644 index 0000000..26f930c --- /dev/null +++ b/476. Number Complement.md @@ -0,0 +1,15 @@ +# [476. Number Complement](https://leetcode.com/problems/number-complement/description/) +# 思路 +先将num的bit全部翻转,再看num有多少前导0,然后用一个合适的mask对之前的翻转结果进行与操作即可。 +# C++ +``` C++ +class Solution { +public: + int findComplement(int num) { + if(num == 0) return 1; + int i, res = ~num, mask=0xffffffff; + while(mask & num) mask <<= 1; + return res & ~mask; + } +}; +```