# Leetcode : 0268. Missing Number (bit)
###### tags:`leetcode`
```
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <unordered_map>
using std::vector;
using std::unordered_map;
using namespace std;
class BaseVectorPrint {
public:
void BasePrint00(vector<int>& num) {
for (size_t i = 0; i < num.size(); ++i) {
cout << "[" <<num.at(i) << "]" << "; ";
}
cout << endl;
}
void BasePrint01(vector<int>& num) {
for (size_t i = 0; i < num.size(); ++i) {
cout << num[i] << "; ";
}
cout << endl;
}
void BasePrint02(vector<int>& num) {
for (const auto &item : num) {
cout << item << "; ";
}
cout << endl;
}
void TwoDimensionalPrint(vector<vector<int>> &num){
for (int i = 0; i < num.size(); i++)
{
for (int j = 0; j < num[i].size(); j++)
{
cout << "[" << num[i][j] << "]";
}
cout << endl;
}
}
};
class Solution00 {
public:
int missingNumber(vector<int>& nums) {
int lenth = nums.size();//it get n + 1
int total = lenth*(lenth+1)/2; //h * w = total area
int missing = 0;
for (int i=0; i<lenth ;i++){
missing += nums[i]; // miss area
}
return (total - missing); //total - miss = lost number
}
};
class Solution01 {
public:
int missingNumber(vector<int>& nums) {
int sum = 0, n = nums.size();
for (auto &a : nums) {
sum += a;
}
return 0.5 * n * (n + 1) - sum; //total area top*below/2 - sum area = lost number.
}
};
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
int missing = n;
for (int i = 0 ; i<n ;i++) {
missing ^= nums[i] ^ i ;
}
return missing;
}
};
//example [0,4,2,1] miss [3]
//all total n = n+1 [0,1,2,3,4] = 5 is max number
//step01 set max number 5
// xor opeator rule
// 1 xor 0 = 1
// 0 xor 1 = 1
// 1 xor 1 = 0
// 0 xor 0 = 0
//5 = 0101
//i = 0 0000 xor 0000
//5 xor 0000 xor 0101 >> 0101
//i = 1 0100 xor 0001 >> 0101
//5 xor 0101 xor 0101 >> 0101
//i = 2 0010 xor 0010 >> 0010
//5 xor 0010 xor 0101 >> 0111
//i = 3 0111 xor 0011 >> 0100
//ans = 0111 xor 0100 >> 0011
int main(void)
{
BaseVectorPrint printVector;
Solution02 runfunc;
vector<int> test01 = { 9,6,4,2,3,5,7,0,1 };
vector<int> test02 = { 1, 2, 3, 4 };
vector<int> test03 = { -1, 1, 0, -3, 3 };
vector<int> ans ;
int intans;
intans = runfunc.missingNumber(test01);
//printVector.BasePrint00(ans);
printf("%d\n",intans);
printf("test\n");
system("pause");
}
```
> Tip total area - miss area = missing
> Tip xor sub max number = missing