相鄰元素差的絕對值都是1,在這樣的陣列中找目標元素

2021-07-23 17:07:19 字數 416 閱讀 4869

有這樣乙個陣列a,大小為n,相鄰元素差的絕對值都是1。如:a=。現在,給定a和目標整數t,請找到t在a中的位置。除了依次遍歷,還有更好的方法麼?

這道題目的解法非常有趣。

陣列第乙個數為array[0], 要找的數為y,設t = abs(y - array[0])。由於每個相鄰的數字之差的絕對值為1。故第t個位置之前的數肯定都比y小。因此直接定位到array[t],重新計算t,t = abs(y – array[t]),再重複上述步驟即可。這種演算法主要利用了當前位置的數與查詢數的差來實現跨越式搜尋。演算法效率要比遍歷陣列的演算法要高一些,並且易於實現。

int findnumberinarray(int arr, int n , int find_number)  

return -1;

}

2006 差的絕對值為 K 的數對數目

給你乙個整數陣列 nums 和乙個整數 k 請你返回數對 i,j 的數目,滿足 i j 且 nums i nums j k x 的值定義為 如果 x 0 那麼值為 x 如果 x 0 那麼值為 x 示例 1 輸入 nums 1,2,2,1 k 1 輸出 4 解釋 差的絕對值為 1 的數對為 1,2,2...

求BST中任意兩節點差的絕對值最小值

這道題考察的是二叉搜尋樹的遍歷,二叉搜尋樹常用的遍歷有前序遍歷,中序遍歷,後序遍歷,其中中序遍歷的結果是有序的,這道題利用的是中序遍歷。private int min int.maxvalue int temp null int getminimumdifference testmethod.tre...

求兩個隨機變數的差的絕對值的期望

問題1 給定離散隨機變數 x 均勻分布在區間 a,b 的整點上,y 均勻分布在區間 c,d 的整點上,求期望 e x y 問題很簡單,顯然最直接的辦法就是列舉 x 和 y 然後進行統計即可。如果再稍稍思考一下,那麼可以發現其實只用列舉其中乙個變數就行了,因為若固定 x i,那麼求 e i y 只需要...