合併總數;及相差最大分析
今日面試題
求正數陣列內和為指定數字的合併總數
例如:[5, 5, 10, 2, 3] 合併值為 15
合併總數為4,分別為:(5 + 10, 5 + 10, 5 + 5 + 2 + 3, 10 + 2 + 3)
=============================================
相差最大分析
原題
給定無序陣列A,線上性時間內找到i和j,j>i,並且保證A[j]-A[i]是最大的。
分析
這個題目是比較簡單的。很直接的,對於每一個A[j],如果知道前面的元素中最小的元素min,則此時相差最大為A[j]-min。則,假設有一個陣列M,M[j]表示[0,j-1]中最小的元素。這個遍歷一邊A,就可以完成構造M。再遍歷一邊陣列,就可以找到相差最大的。我們舉個例子看看M,以及是否有改進的空間。
假設A={1,2,5,3,4}。通過一次遍歷,得到M如下:
1 | 1 | 1 | 1 | 1 |
這是一個極端的例子,但確實給了我們一個改進的方向,就是並不需要一個陣列儲存最小值,而只需要一個變數即可。
上面的例子不明顯,假定A={2,5,1,3,4},過程如下:
j | A[j] | 最小值m | A[j]-m |
0 | 2 | 2 | 0 |
1 | 5 | 2 | 3 |
2 | 1 | 1 | 0 |
3 | 3 | 1 | 2 |
4 | 4 | 1 | 3 |
最終得到相差最大為3.這個例子,可以找到兩個i,j。
上面的過程是一個不斷改進的一個過程。如果在面試的過程中,能夠很好的完成,即使在面試官的指導之下,也是沒有問題的。
這個題目,如果有的同學給出陣列C,C[j]表示[0,j]中的最小值;陣列B表示[j+1, n-1]中的最大值;這兩個陣列遍歷兩次可以得到,然後,再遍歷一次A,對於每一個i,B[i]-C[i]中最大的,就是最終的值。這個思路也是ok的,只不過比我們開始提到的,更加一些,可以通過觀察C,B的變化,找到規律,進行化簡。
【分析完畢】
本文來自微信:待字閨中,2013-08-07釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 相差最大;及逆序分析
- 序列生成;及合併總數分析
- 相差甚遠;及Magic Index分析Index
- 找最大數;及序列生成分析
- 須彌之鏡;及相差甚遠分析
- 周長最長;及找到最大數分析
- 相伴一生;及構造最大數分析
- 構造最大數;及熟悉的陌生人分析
- HBase Region合併分析
- TortoiseGIT建立及合併分支Git
- 聊聊介面最大併發處理數
- 詳解IIS最大併發連線數
- Google賽馬;及最大矩形分析Go
- mysql關於最大連線數、最大併發執行緒數的區別MySql執行緒
- 藍橋杯-合併數列
- java快速分割及合併檔案Java
- 全球大資料公司融資及併購情況彙總分析大資料
- Hbase-原理-region合併和hfile的合併(大合併、小合併)
- 樹上啟發式合併總結
- 段合併優化及注意事項優化
- 分詞問題;及最大乘積分析分詞
- 電信聯通合併原因分析 聯通和電信合併是真的嗎?
- 遊戲運營活動效果分析(三):區服合併分析遊戲
- Hive表小檔案合併方法總結Hive
- 數學-概率與統計-數理統計-總結(四):方差分析及迴歸分析
- PHP 圖片的合併,微信小程式碼合併,文字合併PHP微信小程式
- excel相同名稱數量相加彙總 excel相同名稱自動合併求和Excel
- 相差數十倍的SQL效能分析(r11筆記第98天)SQL筆記
- JavaScript計算兩個日期相差天數JavaScript
- java計算兩個日期相差年數Java
- 最大乘積;及最新版本分析
- javascript 物件合併程式碼例項簡單分析JavaScript物件
- 影片合併分割軟體如何合併影片
- Unity網格合併_材質合併[轉]Unity
- IIS連線數、併發連線數、最大併發工作執行緒數、應用程式池的佇列長度、應用程式池的最大工作程式數詳解執行緒佇列
- 合併果子
- 石子合併
- 【總結】求組合數的方法