给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例 1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: [3,3,7,7,10,11,11]
输出: 10
#include <iostream>
using namespace std;
int main()
{
int a[9]={3,3,7,7,10,11,11};
int i;
if(a[0]!=a[1]) //第一个为单个元素的情况
cout<< a[0]<<"hello";
else
{
for( i=0;i<9;i+=2)
{
if(a[i]== a[i+1])
continue;
else
break;
}
}
cout<<a[i];
return 0;
}
暴力破解是没用的超标了,人家要求时间是 O(log n)
空间是O(1)但是暴力的时间复杂度达到了 O (n)所以不满足
再就是官方的通过解法 二分搜索,这里就不贴图了,直接放个链接,官方画图画的很详细
https://leetcode-cn.com/problems/single-element-in-a-sorted-array/solution/you-xu-shu-zu-zhong-de-dan-yi-yuan-su-by-leetcode/