[leetcode] 适合打劫银行的日子 -前缀和

简介: 前缀和思想用数组 l[ ]表示前面有多少个数满足 a[i−1]>=a[i]用数组 r[] 表示前面有多少个数满足 a[i]<=a[i+1]O(n)遍历之后得到 l[] , r[]然后O(n)找满足l [ i ] > = t i m e & & r [ i ] > = t i m e 的下标存入 vector 并返回

题目链接


4d4f0bc89ae54b0b8e828dbb79c2cf7e.png

前缀和思想


用数组 l[ ]表示前面有多少个数满足 a[i−1]>=a[i]

用数组 r[] 表示前面有多少个数满足 a[i]<=a[i+1]


O(n)遍历之后得到 l[] , r[]

然后O(n)找满足l [ i ] > = t i m e    & &    r [ i ] > = t i m e 的下标存入 vector 并返回


Code:


class Solution {
public:
    vector<int> goodDaysToRobBank(vector<int>& security, int time) {
        int n = security.size();
        vector<int> l(n), r(n);
        for(int i=1;i<n;i++) {
            if(security[i] <= security[i-1]) l[i] = l[i-1] + 1;
            if(security[n-i-1] <= security[n-i]) r[n-i-1] = r[n-i] + 1;
            // cout << l[i] << "   " << r[i] << endl;
        }
        vector<int> ans;
        for(int i=time;i<n-time;i++) {
            if(l[i] >= time && r[i] >= time) ans.push_back(i);
        }
        return ans;
    }
};


0777abb45750445390330f4f721e8b61.png


文章知识点与官方知识档案匹配,可进一步学习相关知识

算法技能树leetcode-动态规划22-括号生成8242 人正在系统学习中


目录
相关文章
|
7月前
|
算法 Android开发 索引
LeetCode 周赛上分之旅 #44 同余前缀和问题与经典倍增 LCA 算法
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
52 0
|
3月前
|
安全 Go
golang力扣leetcode 2100.适合打劫银行的日子
golang力扣leetcode 2100.适合打劫银行的日子
18 0
|
8月前
|
安全
LeetCode-2100 适合打劫银行的日子
LeetCode-2100 适合打劫银行的日子
|
4月前
[leetcode 前缀和]
[leetcode 前缀和]
|
10月前
|
算法 索引
LeetCode算法小抄--数组(双指针、差分数组、前缀和)
LeetCode算法小抄--数组(双指针、差分数组、前缀和)
|
算法
LeetCode 周赛 340,质数 / 前缀和 / 极大化最小值 / 最短路 / 平衡二叉树
今天讲 LeetCode 单周赛第 340 场,今天状态不好,掉了一波大分。
57 0
|
人工智能 算法 搜索推荐
LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序
大家好,我是小彭。 上周末是 LeetCode 第 338 场周赛,你参加了吗?这场周赛覆盖的知识点很多,第四题称得上是近期几场周赛的天花板。
80 0
|
算法 索引
leetcode-每日一题745. 前缀和后缀搜索(哈希和字典树)
如果我们用前缀 prefix 和 后缀 suff去暴力对比所有单词肯定会超时,我们可以先把单词里所有的前缀后缀组合,中间用特殊符号@连接,对应的最大下标存入哈希表中。搜索时,用特殊符号@连接前缀后缀,在哈希表中进行搜索
63 0
leetcode-每日一题745. 前缀和后缀搜索(哈希和字典树)
|
自然语言处理
LeetCode每日一题——745. 前缀和后缀搜索
设计一个包含一些单词的特殊词典,并能够通过前缀和后缀来检索单词。
53 0
|
算法
[leetcode] 2055蜡烛之间的盘子 | 前缀和
在这里做出处理,让下标从1开始,询问的区间两端也+1 我们开两个数组: nearL 以及 nearR nearL[i] 表示:在i 位置离着最近的左边的 ∣符号是在哪一个下标 nearR[i] 表示:在i 位置离着最近的右边的 ∣符号是在哪一个下标 如果说 s[i] == '|' 那么说 nearL[i]=i 并且 nearR[i]=i 让左区间等于离着当前位置最近的右边的 | 让右区间等于离着当前位置最近的左边的 | 然后就可以直接开始 前缀和 了
73 0
[leetcode] 2055蜡烛之间的盘子 | 前缀和