lincode 打劫房屋

2021-09-14 06:17:05 字數 657 閱讀 5501

假設你是乙個專業的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。

給定乙個非負整數列表,表示每個房子中存放的錢, 算一算,如果今晚去打劫,在不觸動報警裝置的情況下, 你最多可以得到多少錢 。

樣例 1:

輸入: [3, 8, 4]

輸出: 8

解釋: 僅僅打劫第二個房子.

樣例 2:

輸入: [5, 2, 1, 3]

輸出: 8

解釋: 搶第乙個和最後乙個房子

o(n) 時間複雜度 且 o(1) 儲存。

設res[i]表示從i到n-1這一段能拿到的最多的錢,那麼res[i]一共有兩種情況:

拿a[i]: 那麼res[i] = a[i] + res[i+2]

不拿a[i]: 那麼res[i] = res[i+1]

所以res[i] = max(a[i] + a[i+2], a[i+1])

需要初始化的是res[n-1] = a[n-1] 以及res[n-2] = max(a[n-1], a[n-2])

最終的結果是res[0]

class solution 

};

打劫房屋 II和打劫房屋 III

ii題目 在上次打劫完一條街道之後,竊賊又發現了乙個新的可以打劫的地方,但這次所有的房子圍成了乙個圈,這就意味著第一間房子和最後一間房子是挨著的。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是 相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。給定乙個非負...

lintcode 打劫房屋

假設你是乙個專業的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是 相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。給定乙個非負整數列表,表示每個房子中存放的錢,算一算,如果今晚去打劫,你最多可以得到多少錢 在不觸動報警裝置的...

打劫房屋 II

在上次打劫完一條街道之後,竊賊又發現了乙個新的可以打劫的地方,但這次所有的房子圍成了乙個圈,這就意味著第一間房子和最後一間房子是挨著的。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是 相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。給定乙個非負整數列表,...