#includeusing namespace std;
#include/**
在陣列a[0..n-1]中,有所謂的魔術索引,滿足條件a[i]=i。
給定乙個不下降序列,元素值可能相同,編寫乙個方法,
判斷在陣列a中是否存在魔術索引。請思考一種複雜度優於o(n)的方法。
給定乙個int陣列a和int n代表陣列大小,
請返回乙個bool,代表是否存在魔術索引。
當陣列變為不下降序列時,允許陣列**現重複的元素
則使用原始的二分法將會失效
但是可以限定搜尋的區間
(1)如果a[i]大於i,則搜尋區間為整個左半部分區間和右半部分的a[a[i]:]
(2)如果a[i]小於i,則搜尋區間為整個右半部分區間和左半部分區間的區域性a[0:a[i]]
**/class magicindex
if(n==1)
else
}else
else
if(a[n]==n)
else
else
}else
else}}
}}
};int main()
C 魔術索引
includeusing namespace std include 題目描述 在陣列a 0.n 1 中,有所謂的魔術索引,滿足條件a i i。給定乙個公升序陣列,元素值各不相同,編寫乙個方法,判斷在陣列a中是否存在魔術索引。請思考一種複雜度優於o n 的方法。給定乙個int陣列a和int n代表陣...
8 3 魔術索引
rra y mi d array mid array mid 小於中間值索引mid midmi d時中間值左邊的元素的最大值為mid 2 mid 2 mid 2且元素值單調遞減,中間值左邊的元素的索引值從mid 1 mid 1 mid 1以1位單位單調遞減,因此在左邊不可能出現魔術索引。此時遞迴搜尋...
面試題 08 03 魔術索引
難度 簡單 題目描述 解題思路 如果不想複雜的話就很簡單嘛 看起來也不太像是二分的樣子啊 public intfindmagicindex int nums public intfindhelper int nums,int left,int right int mid left right lef...