Arrays 给定n个数的数组,arr[0]为偶数,arr[n-1]为奇数,查找索引i,使a[i]为偶数,a[i+1]为奇数

Arrays 给定n个数的数组,arr[0]为偶数,arr[n-1]为奇数,查找索引i,使a[i]为偶数,a[i+1]为奇数,arrays,binary-search,Arrays,Binary Search,假设我有一个有n个数字的数组A,所以这个数组的第一个元素是偶数,最后一个元素是奇数-我想写一个函数来查找索引I,这样A[I]是偶数,A[I+1]是奇数。 函数是返回找到的索引;如果没有任何这样的索引,则返回-1 该解决方案的时间复杂度必须为logn 我一直在考虑在这种情况下使用二进制搜索 以下是我迄今为止所做的工作: int findIndex(int A[], int n) { int left=0,right=n-1,mid,i; while(left<=right)

假设我有一个有n个数字的数组A,所以这个数组的第一个元素是偶数,最后一个元素是奇数-我想写一个函数来查找索引I,这样A[I]是偶数,A[I+1]是奇数。 函数是返回找到的索引;如果没有任何这样的索引,则返回-1

该解决方案的时间复杂度必须为logn

我一直在考虑在这种情况下使用二进制搜索

以下是我迄今为止所做的工作:

int findIndex(int A[], int n)
{
   int left=0,right=n-1,mid,i;

   while(left<=right)
    {
      mid=(left+right)\2;
      if (A[mid]%2==0 && A[mid+1]%2!=0)
        return mid;
      else if (A[mid]%2!=0)
        right=mid-1;
      else 
       left=mid+1;
    }
   return -1;
}
我不确定

你觉得怎么样?
任何帮助都是非常值得赞赏的。第一个值是偶数,因此这将是一个更合理的起点。a[1+1]是指[i+1]吗?
for(int i = 0; i < A.size()-1; i++){
    if((A[i]+A[i+1])%2 == 1){
        return i;
    }
}