以nums陣列最大的數來作為字典的最大索引,比如最大數為max,那麼字典的範圍就是從1到max,這樣如果字典中索引不在nums陣列裡就置0,轉換為了不能取相鄰兩個數,就可以用打家劫舍的方法來做了。
dp[i]表示nums[
:i]獲得最大的點數
狀態轉移
dp[i]
=max
(dp[i-1]
,dp[i-2]
+dict[i]
*i);
是不是和打家劫舍很像了,結果就是dp[max_num]。
int
deleteandearn
(vector<
int>
& nums)
int max_num=int_min;
for(
auto num:nums)
vector<
int>
dict
(max_num+1,
0);for
(auto num:nums)
vector<
int>
dp(max_num+1,
0); dp[1]
=dict[1]
;for
(int i=
2;i<=max_num;i++
)return dp[max_num]
;}
LeetCode 演算法題
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
Leetcode演算法題
56.合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 intervals 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 intervals 1,4 4,5 輸出 1,5 解釋 ...
Leetcode演算法題
20 有效的括號 題目描述 給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 示例 1 輸入 s 輸出 true 示例 2 輸入 s 輸出 true 示例 3 輸入 s 輸出 false 示例 4 輸入 s 輸出 fal...