Longest X 贪心,滑动窗口,前缀和(400)
题意 :
- 给一个x.串,每次操作可以将一个.换成一个x,问0-k次操作的过程中,连续的x的数量最多是多少
思路 :
- 转换条件,就是我们最多可以将k个.换成x
- 在所有满足.数小于等于k的区间中,最大的区间长度就是答案;优化一下,
- 显然这会超时,我们的优化方案是 :1.前缀和(因为要求区间内的.数量);2.滑动窗口算法(外层循环左边界,每次往右移动一个,内层循环右边界,找到
恰好
能让这个区间内个数小于等于k的最大的右边界,注意这种循环方式得到的r是恰好让区间内数量大于k的) - 输入字符串又没有给其长度,我们先预处理出来,注意-1,因为我们给它加了个空格字符
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <unordered_set>
#include <math.h>
#define endl '\n'
#define fi first
#define se second
#define pb push_backusing namespace std;
using ll = long long;typedef pair<int, int> PII;int main()
{cin.tie(nullptr) -> sync_with_stdio(false);string s; cin >> s;s = " " + s;ll k; cin >> k;ll n = s.size() - 1;vector<int> cnt(n + 1);for (int i = 1; i <= n; i ++ ){if (s[i] == '.') cnt[i] = cnt[i - 1] + 1;else cnt[i] = cnt[i - 1];}ll r = 1, ans = 0;for (ll l = 1; l <= n; l ++ ){while (r <= n && cnt[r] - cnt[l - 1] <= k)r ++ ;ans = max(ans, r - 1 - l + 1);}cout << ans << endl;return 0;
}
Longest X 贪心,滑动窗口,前缀和(400)相关推荐
- Leetcode1703. 得到连续 K 个 1 的最少相邻交换次数[C++题解]:难(货仓选址加强版+滑动窗口+前缀和)
文章目录 题目分析 题目链接 题目分析 首先需要明确一点:最优结果中1的相对位置和开始时不会改变.否则的话就是交换两个1,会徒劳增加交换次数. 比如[1,0,0,0,0,0,1,1],最后变成[0,0 ...
- [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]
[问题描述][中等] 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0.示例: 输入: ...
- 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)
一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步, ...
- leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...
- LeetCode Longest Repeating Character Replacement(滑动窗口)
问题:给出一个由大写字母构成的字符串,可以对字符串最多作k次操作,将一个字符转换为另外一个字符. 找出操作后最长的重复子串 思路:使用滑动窗口,及用一个长度为26的数组记录字符个数.初始时,窗口大小为 ...
- AcWing 1236. 递增三元组 (flag + 前缀和 | 二分 | 滑动窗口)
1236. 递增三元组 解题思路 最开始想到3重循环枚举三个数组,然后最内层用条件语句判断一下即可,但是数据范围为10510^5105,三重循环肯定会超时 那么这道题很可能需要的算法复杂度为O(n)O ...
- 209 长度最小的子数组(前缀和+二分查找、滑动窗口)
1. 问题描述: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的子数组,返回 0. 示例: 输入:s = ...
- leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法
题目链接 根据我们之前介绍的滑动窗口法的解法: 滑动窗口法详解 leetcode 438. Find All Anagrams in a String 滑动窗口法 这题,我们不难解决,使用之前的模板. ...
- 滑动窗口类型(Sliding window)
Sliding window,滑动窗口类型 介绍部分来自:https://www.zhihu.com/question/36738189/answer/908664455 滑动窗口类型的题目经常是用来 ...
最新文章
- ubuntu 能解析域名但ping不通_域名解析设置方法
- rca接口_音频线怎么区别?几种音频接口逐一介绍
- okhttputils java_Java OkHttpUtils.post方法代码示例
- [转]数据库事务ACID特性
- 第一天:认识python
- Could not find a version that satisfies the requirement PyQt5
- [转载] MLDN魔乐科技李兴华主讲Oracle——02 Oracle安装
- 德芙网络营销策略ppt_看德芙网络营销策划经典案例,戳这里!
- Flash游戏开发-RPG地图实现
- 六大机构好评的Teradata 究竟有哪些过人之处?
- manjaro linux树莓派,manjaro
- Holy Grail————计蒜客
- 爬在NLP的大道上——Question Answering Infused Pre-training of General-Purpose Contextualized Representations
- 使用梯度上升法求解 PCA 问题
- CS61A Proj 3
- 计算机存储介质清除工具,天桥科技存储介质信息消除工具
- html中submit和button的区别(总结)
- 如何打造优秀的个人博客
- 产品经理学习-加分技能
- Spring Cache使用Redis自定义缓存key
热门文章
- OO-ALV标准工具栏按钮
- 返聘前任员工:效率高出新人40%!
- SAP 物料主数据屏幕增强
- 离职后,我们该如何处理社保!
- 预留在PP模块里面的作用
- 交易性金融资产账务处理问题及改进
- 2021全年“遇冷”后,“电商节”该何去何从?
- c语言 求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- linux支持中文文件名,CentOS安装中文支持(linux中文文件名乱码)
- 乐橙本地录像回放不了_本地工具访问:安全、高效、合规的IT资源远程访问