打家劫舍i
簡單的dp
設定兩個陣列 f[i] 代表必偷第i個,g[i]代表不偷第i個
class solution
return max(f[n], g[n]);
}};
打家劫舍ii
這裡跟第一題最大的區別在於第一家跟第n家不能同時偷
要麼偷1不偷n
要麼偷n不偷n
要麼都不偷
所以分類討論
第一種不選第一家--------f[n] 一定選n g[n]一定不選n
這裡包含了不選0不選n和不選0選n
第二種選擇第一家------f[n]代表又選0又選n 直接pass不符合題目要求 g[n]代表不選n ,選0或者不選0不確定
class solution
int res=max(f[n],g[n]);
f[1]=nums[0];
g[1]=0;
for(int i=2;i<=n;i++)
res=max(res,g[n]);
return res;
}};
打家劫舍iii
此題是樹形dp
對於一棵二叉樹,如果選擇了跟節點,則不能選擇兩個兒子
如果沒有選擇根節點 則可以選兒子或者不選兒子
這裡用hash表 unordered_map> f;
第乙個關鍵字代表跟,然後是選擇偷為0 的最大值,選擇不偷1 的最大值
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
void dfs(treenode* root)
};
leetcode 打家劫舍問題
題目 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。分析 dp ...
LeetCode 打家劫舍問題
q 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入...
打家劫舍問題 LeetCode198 213
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...