정렬된 정수형 벡터를 하나 받는데, 해당 벡터는 단 하나의 숫자를 제외하고 모두 두 개씩 존재한다.
여기서 단 하나만 존재하는 숫자를 찾는 것이 문제이며, O(log n)의 시간과 O(1) 공간을 만족 해야 한다.
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int head{0};
int tail = nums.size() - 1;
int body{0};
while (head <= tail)
{
body = ((tail - head) >> 1) + head;
if (body == 0)
{
return nums[body];
}
else if (nums[body] == nums[body + 1])
{
if (body % 2 == 0)
{
head = body + 1;
}
else
{
tail = body - 1;
}
}
else if (nums[body] == nums[body - 1])
{
if (body % 2 == 0)
{
tail = body - 1;
}
else
{
head = body + 1;
}
}
else
{
return nums[body];
}
}
return nums[body + 1];
}
};