Single Missing Number
input: 11122333
output: 2
input: 11122233344455666
output: 5
Last updated
input: 11122333
output: 2
input: 11122233344455666
output: 5
Last updated
int __bs_findMissingNumber(int left, int right, const vector<int> &nums) {
if (left < right) {
int middle = left + (right - left) / 2;
float expect = (float(middle/3)) + 1;
if (nums[middle] == floor(expect))
return __bs_findMissingNumber(middle + 1, right, nums);
else
return __bs_findMissingNumber(left, middle - 1, nums);
}
else {
return nums[left]; // left == right
}
}
int findMissingNumber(const vector<int> &nums) {
if (nums.size() < 3)
return 1;
return __bs_findMissingNumber(0, nums.size() - 1, nums);
}
int main()
{
vector<int> nums1 = { 1,1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,6 };
vector<int> nums2 = { 1,1,1,2,2,3,3,3 };
vector<int> nums3 = {};
vector<int> nums4 = { 1,1 };
vector<int> nums6 = { 1,1,1,2 };
vector<int> nums7 = { 1,1,1,2,2, };
vector<int> nums9 = { 1,1,1,2,2,2,3,3,3,4 };
cout << 1 << ' ' << findMissingNumber(nums1) << endl;
cout << 2 << ' ' << findMissingNumber(nums2) << endl;
cout << 3 << ' ' << findMissingNumber(nums3) << endl;
cout << 4 << ' ' << findMissingNumber(nums4) << endl;
cout << 6 << ' ' << findMissingNumber(nums6) << endl;
cout << 7 << ' ' << findMissingNumber(nums7) << endl;
cout << 9 << ' ' << findMissingNumber(nums9) << endl;
}