Easy C++ solution || Using only array concepts || Easily explained
If array does not contain 1 then our answer is 1 since a | b > 1 for a, b > 1.\nSimlarly, if array does not contain 2 then our answer is 2.\nIf we still do not 
If array does not contain 1 then our answer is 1 since `a | b > 1 for a, b > 1.`\nSimlarly, if array does not contain 2 then our answer is 2.\nIf we still do not have our answer that means our array contains 1 and 2 which certainly gives 3 since` 1 | 2 = 3` However, it does not guarantee 4, so if our array does not contain 4 then 4 is our answer. \nSimilarly, our answer will be the least power of 2 not present in our array. \n\n# Code\n```\nclass Solution {\npublic:\n    int minImpossibleOR(vector<int>& nums) {\n        int n = nums.size();\n        sort(nums.begin(), nums.end());\n        int curr = 1;\n        for (int i=0; i<n; ++i) {\n            if (nums[i] > curr) \n                return curr;\n            else if (nums[i] == curr)\n                curr *= 2;\n        }\n        return curr;\n    }\n};\n```
['Array', 'C++']