descrpiton:
給定乙個陣列,比如說
int
a =
;int
b =
;
求出其最大子陣列和(最大子陣列必須是連續的)
其最大子陣列為 9, 8, 3 ,所以和為 20
b 的和是 18
solution:
本題可以用動態規劃來做,俗稱 dp
dp最重要的就是狀態轉移方程(這一步和前一步的關係):
dp[i]
= max(dp[i - 1] + array[i], array[i]
)
這裡dp代表的是前 i 個元素最大子陣列和(必須使用到第i - 1個元素,如果 dp[i-1] + array[i] > array[i])
理由是:因為子陣列是要連續的,所以如果要用之前的值,必須使用到第i - 1個元素。所以對於任意dp[i],它必須使用到第 i 個元素為了下一步使用。比如 i = 2,則 dp = 1 + 4 + -5 = 0. 這也就是為什麼這裡要用max來記錄臨時最大值,而不是直接返回 dp[array.length + 1]
綜合**如下:
private
intlargesub
(int
a)return max;
}
位元組跳動演算法實習生面試
前一段時間去參加了位元組跳動的演算法實習生面試,流排程方向,記錄一下當時的死亡面試。首先是固定的自我介紹,然後問了一下寫的人臉識別專案,聽了用到了svm之後,就讓手推了一下svm的過程,講了一下什麼是支援向量,具體在專案中svm是怎麼實現的 相當於知道公式做應用題的感覺 然後問了一下為什麼要把灰度化...
位元組跳動演算法崗實習生統一面試
演算法題概率題 二面演算法題 手撕 一定和面試官完全溝通好思路後再快速實現,沒有邊寫邊改邊想的時間,沒有思路就問面試官。隨機森林和決策樹怎麼操作 時間要求o n 時間要求o n 空間要求o 1 乙個骰子擲出1後停止,問骰子投擲次數的期望 e 1 6 1 5 6 e 1 e 6 線性回歸和邏輯回歸的區...
位元組跳動抖音演算法崗實習面試(一面 二面)
寫在前面 這是我第一次參加實習面試,面試前也在網上查了一下演算法崗面試的相關經驗,受益頗大,因此自己面試完後也試著記錄了一下,雖然沒能通過最終面試,但也希望能給想面試相關崗位的人一些啟發和幫助 關於面試準備 複習各種常用的模型,特別簡歷寫的專案中使用到的 要弄清楚各種細節,因為面試官可能問到模型裡很...