陣列和;及此起彼伏分析
今日面試題:陣列和
有陣列A={5,3,8,9,16},第一次遍歷有:A = {3-5,8-3,9-8,16-9}={-2,5,1,7},陣列中元素和為-2+5+1+7=11;第二次遍歷有:A = {5-(-2),1-5,7-1}={7,-4,6},元素和為9.
給定陣列A,求第n次遍歷之後,陣列中元素的和。
======================================================
此起彼伏分析
原題
有這樣一個陣列A,大小為n,相鄰元素差的絕對值都是1.如: A={4,5,6,5,6,7,8,9,10,9}。 現在,給定A和目標整數t,請找到t在A中的位置。除了依次遍歷,還有更好的方法麼?
分析
最近有不少的同學反應題目比較簡單,還有的同學反應題目有些難,還有的同學的反映很簡單:“見過!” 在這裡,需要做一下簡單的說明:
每天一個題目,確實很難考慮的面面俱到,又要考慮剛剛開始的同學,又要考慮已經比較厲害的同學。所以,只是簡單和容易的每天交替著來。
到目前為止,基本都是找的各大公司的面試題,少有原創的面試題。所以,見多識廣的同學,肯定是經常有見過的。不過,這個沒有關係,溫故知新,我相信重新思考,會給大家帶來更多的進步。尤其是可以看到更多人的思路,這個帶來的進步是巨大的。
我們也希望同學能夠多貢獻一些高質量的題目。
不會出一些完全是ACM比賽的題目。還是要照顧大多數。
所以,無論題目難易、新舊,只要思考,都會有新的提高。
現在我們來看看今天的題目,今天的題目,最直接的就是遍歷,訪問每一個元素,並且進行比較。這是任何一個、沒有任何特點的陣列,都可以採用的方法。也就是,相鄰元素差的絕對值,我們沒有使用。
那麼如何來利用這個特點呢?看下面的陣列:
23456545678
如果,我們要找到t=8,則按照如下步驟進行,指標初始指向第一個元素
與第一個元素2比較,差值為6,指標指向第6元素,
當前元素為4,與8比較,差值為4,指標指向第10元素
當前位置為8,找到元素。
為什麼可以直接跳躍指到到第6,或者第10個元素呢?原因就是,相鄰元素的差的絕對值都是1.這樣,針對第一步來說,當前值2與t=8相 差6,如果t在陣列中存在,則一定在2的後面第6個以後,而且,只有當2的後面,每一個都是+1的時候,才會在第6個位置找到t。其他的情況,一定都小於 t。
總結下演算法過程:
1. 當前元素與t比較,差為0,則找到;
2. 否則,得到差值為k,指標跳到當前元素後的第k個元素。
3. 重複這兩步,直到找到t或者t不在陣列中。
【分析完畢】
本文來自微信:待字閨中,2013-08-31釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 此起彼伏;及燈分析
- 又見排序;及陣列和分析排序陣列
- 燈;及陣列統計分析陣列
- 查詢提示;及重排陣列分析陣列
- 重排陣列;及消失的數字分析陣列
- 陣列統計;及樹的高度分析陣列
- 找陣列的波谷;及巧妙排序的分析陣列排序
- jquery裡遍歷普通陣列和多維陣列的方法及例項jQuery陣列
- 矩陣和陣列矩陣陣列
- 建立和訪問陣列及使用方法陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 【C】 28_指標和陣列分析(上)指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 繩子的長度;及找陣列的波谷分析陣列
- 陣列指標和指標陣列陣列指標
- 指標陣列和陣列指標與二維陣列指標陣列
- C++語言中陣列指標和指標陣列徹底分析(系列一) (轉)C++陣列指標
- 陣列和字串陣列字串
- 陣列去重和陣列扁平化陣列
- 二維陣列和稀疏陣列互轉陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- php關聯陣列和索引陣列差別PHP陣列索引
- 【Java】int[] 陣列 和 Integer陣列的轉換Java陣列
- JavaScript 陣列方法集合及示例!JavaScript陣列
- 補充內容:C++語言中陣列指標和指標陣列徹底分析 (轉)C++陣列指標
- 陣列和指標陣列指標
- 指標和陣列指標陣列
- 求二維陣列中最大子陣列的和陣列
- JS陣列遍歷和獲取陣列最值JS陣列
- JavaScript中對陣列和陣列API的認識JavaScript陣列API
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- 陣列(2)陣列運算及典例(求解素數的方法)陣列
- KMP演算法以及優化(程式碼分析以及求解next陣列和nextval陣列)KMP演算法優化陣列
- 第四章:多維陣列和矩陣 ------------- 4.7 子陣列最大累加和陣列矩陣
- JAVA陣列的定義及用法Java陣列
- javascript的boolean及陣列的indexJavaScriptBoolean陣列Index
- shell 使用陣列及字串擷取陣列字串
- c語言陣列、sizeof()及strlen()C語言陣列