LeetCode 2100适合打劫银行的日子[ 动态规划] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 2100适合打劫银行的日子[ 动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
好久没遇到动态规划的题目了,当然这道题目并不是纯粹的动态规划,反而有种贪心的味道。只需要从左往右和从右往左遍历一遍,把所有点左边和右边的最长序列长度记录下来,这样再一次遍历,判断其左右time日子里是否符合题中要求即可,代码如下:
class Solution
public:
vector<int> goodDaysToRobBank(vector<int>& security, int time)
vector<int> ans;
int n = security.size();
if(n <= time * 2) return ans;
vector<int> left(n), right(n);
// 记录从左往右每个位置所处的最长序列
for(int i = 1; i < n; i ++)
if(security[i] <= security[i - 1])
left[i] = left[i - 1] + 1;
// 记录从右往左每个位置所处的最长序列
for(int i = n - 2; i >= 0; i --)
if(security[i] <= security[i + 1])
right[i] = right[i + 1] + 1;
for(int i = 0; i < n; i ++)
if(right[i] >= time && left[i] >= time)
ans.push_back(i);
return ans;
;
以上是关于LeetCode 2100适合打劫银行的日子[ 动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章