Leetcode學習筆記(十三)打家劫舍三部曲

2021-10-04 08:38:15 字數 2338 閱讀 1995

題目:

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。

給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

示例:

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

輸出: 4

解釋: 偷竊 1 號房屋 (金額 = 1) ,然後偷竊 3 號房屋 (金額 = 3)。

偷竊到的最高金額 = 1 + 3 = 4 。

輸入: [2,7,9,3,1]

輸出: 12

解釋: 偷竊 1 號房屋 (金額 = 2), 偷竊 3 號房屋 (金額 = 9),接著偷竊 5 號房屋 (金額 = 1)。

偷竊到的最高金額 = 2 + 9 + 1 = 12 。

思路:

動態規劃,dp[i] = max(dp[i-2]+nums[i], dp[i-1])

**:

class solution 

return b;

}};

題目:

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。

給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

思路:

首先,首尾房間不能同時被搶,那麼只可能有三種不同情況:要麼都不被搶;要麼第一間房子被搶最後一間不搶;要麼最後一間房子被搶第一間不搶。

情況一和情況三可以合成一種情況

其實就是把環拆成兩個佇列,乙個是從0到n-1,另乙個是從1到n,然後返回兩個結果最大的。

**:

class solution 

int cal_money(vector& nums, int start, int end)

return b;

}};

題目:

在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為「根」。 除了「根」之外,每棟房子有且只有乙個「父「房子與之相連。一番偵察之後,聰明的小偷意識到「這個地方的所有房屋的排列類似於一棵二叉樹」。 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。

計算在不觸動警報的情況下,小偷一晚能夠盜取的最高金額。

示例:

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

3/ \

2 3

\ \

3 1

輸出: 7

解釋: 小偷一晚能夠盜取的最高金額 = 3 + 3 + 1 = 7.

輸入: [3,4,5,1,3,null,1]

3/ \

4 5

/ \ \

1 3 1

輸出: 9

解釋: 小偷一晚能夠盜取的最高金額 = 4 + 5 = 9.

**:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

pairhelprob(treenode* root) ;

auto left = helprob(root->left);//對於以r.left為根的樹,計算搶劫根節點(r->left)與不搶劫根節點可獲得最大金額

auto right = helprob(root->right);

pair res = ;

res.first = max(left.first, left.second) + max(right.first,right.second);//計算不搶劫當前根節點可獲得的最大金額(那麼其左右子樹可以隨便搶)

res.second = root->val + left.first + right.first;//計算若搶劫根節點可獲得的最大金額(此時,其左右子樹的根節點不能被搶)

return res;

}};

Python學習筆記(十三)

模組包 if name main 軟體目錄結構規範 作業 atm 購物 程式 import 語句 import module1 module2 modulen 當我們使用import語句的時候,python直譯器通過自己的搜尋路徑 存在sys.path裡 進行搜尋from import 語句 fro...

Python深度學習 學習筆記(十三)

上一節,我們提到了rnn已經rnn在keras中最簡單的層 rnn。但 rnn由於過於簡化,沒有實用價值。實際上,它不可以學到長期依賴。原因在於梯度消失問題,當運用比較多的非迴圈層時,而讓網變得無法訓練。同樣的問題其實也普遍發生在密集連線層。今天介紹的lstm long short term mem...

python基礎學習筆記(十三)

re模組包含對 正規表示式。本章會對 re模組主要特徵和正規表示式進行介紹。什麼是正規表示式 正規表示式是可以匹配文字片段的模式。最簡單的正規表示式就是普通字串,可以匹配其自身。換包話說,正規表示式 python 可以匹配字串 python 你可以用這種匹配行為搜尋文字中的模式,並且用計算後有值併發...