C 魔術索引2

2021-09-25 23:46:18 字數 611 閱讀 1934

#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...