随笔分类 - 题解
这里有牛客、洛谷、力扣等oj的题解
摘要:题目来源 978. 最长湍流子数组 方法一 滑动窗口,双指针 第一种情况和第二种情况分开讨论 当符合条件的时候,left不动,right加1; 不符合条件的时候,left等于right; 窗口长度为right-left+1; 长度为1的时候特判,返回1; 代码 class Solution { pu
阅读全文
摘要:题目来源 1423. 可获得的最大点数 思路 滑动窗口 由于每次只能拿开头和结尾的牌,所以最后剩下的必然是连续的n-k张牌。可以用滑动窗口的方法来求解中间连续的牌的最小值,然后利用一开始的总和减去剩余卡牌的点数之和的最小值,得出拿走的卡牌的点数之和的最大值。 代码 class Solution {
阅读全文
摘要:题目来源:1208. 尽可能使字符串相等 思路 方法一:双指针 用一个数组存储两个字符串第i个位置的ASCII码差值,用start和end表示子数组的开始下标和结束下标,用sum来存储子数组所用的开销,且保证sum不超过maxCost。子数组的长度为end-start+1。 代码: class So
阅读全文
摘要:题目来源:801. 使序列递增的最小交换次数 题目描述:我们有两个长度相等且不为空的整型数组 A 和 B 。 我们可以交换 A[i] 和 B[i] 的元素。注意这两个元素在各自的序列中应该处于相同的位置。 在交换过一些元素之后,数组 A 和 B 都应该是严格递增的(数组严格递增的条件仅为A[0] <
阅读全文
摘要:题目来源:424. 替换后的最长重复字符 思想及算法: 双指针,滑动窗口 一个左指针记录窗口开始位置,一个右指针记录窗口结束位置。 需要一个数组,用来维护窗口内字母出现的次数。 需要一个变量来记录历史最长重复字符 主要是计算窗口中字符串出现次数最多的字母个数+K是否满足条件。 窗口扩张:left不变
阅读全文
摘要:题目来源 888.公平的糖果棒交换 思路及算法 记Alice的糖果棒的总大小为$sumA$,Bob的糖果棒的总大小为$sumB$。设答案为{x, y},即Alice的大小为$x$的糖果棒与Bob的大小为$y$的糖果棒交换,则有如下等式: \[ sumA-x+y = sumB+x-y \] 化简,得:
阅读全文
摘要:题目来源:拼数 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; bool cmp(stri
阅读全文
摘要:题目来源:Subsequence 题目描述: 给出了一个N个正整数(10 <N <100 000)的序列,每个正整数小于或等于10000,并且给出了一个正整数S(S <100 000 000)。 编写程序以查找序列中连续元素的子序列的最小长度,其总和大于或等于S。 用尺取法 #include<ios
阅读全文
摘要:题目来源: 校门外的树 方法一: 假设每个点的树为1,将区间中的树减一,使其小于1 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> using namespace
阅读全文
摘要:题目来源: 明明的随机数 有三种解法: 先去重,再排序 先排序,再去重 桶排序 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { in
阅读全文

浙公网安备 33010602011771号