筆試之迴圈遞增陣列查詢

2021-06-28 15:05:01 字數 404 閱讀 1534

問題:對已排好序的陣列a,一般來說可用二分查詢 可以很快找到。

現有一特殊陣列a,它是迴圈遞增的,如a=,

試在這樣的陣列中找一元素x,看看是否存在。

思路:同樣用二分查詢,每次用待查詢元素x與中間元素比較,如果大於中間元素,則left=middle+1,如果小於中間元素,需比較x與左邊元素的大小,如果大於左邊元素,則right=middle-1,否則left=middle+1。

int findx(int *a, int len, int key)

else if(key < a[middle])

else

}else

return 1;

}return 0;

}

二分擴充套件(遞增陣列迴圈移動後查詢某數字)

對於已經有序的遞增序列,可以通過二分法查詢某個數字。題目經過了一些變化,將某個遞增序列迴圈移動未知次數之後,再次查詢序列中是否存在某個數字,同樣可以用二分法來做。例如序列 經過迴圈移動後變成,現在我們想要查詢的數字 x 10。序列變成了兩個部分,一部分遞增,出現乙個斷層之後再次遞增。在每次二分過程中...

筆試之 陣列去重

筆試是能力表現得第乙個體現,我幾乎每次面試都有筆試題,來來回回好幾次,今天先整理幾道題。1 陣列去重 這是乙個簡單而且出現率達到90 的題目,我也會去看好幾種方法,真的是越深入學js,答案越是多。這裡也只是說一種,用indexof 方法 w3c這樣定義它 indexof 方法可返回某個指定的字串值在...

迴圈陣列之金幣

描述 國 王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣 之後兩天 第二天和第三天 裡,每天收到兩枚金幣 之後三天 第 四 五 六天 裡,每天 收到三枚金幣 之後四天 第 七 八 九 十天 裡,每天收到四枚金幣 這種工資發放模式會一直這樣延續下去 當連續n天每天收到n枚金幣後,騎士會在...