欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 寒假刷题Day11

寒假刷题Day11

2025/2/21 23:12:19 来源:https://blog.csdn.net/sjmbahczdszjj666/article/details/145290818  浏览:    关键词:寒假刷题Day11

一、2516. 每种字符至少取 K 个

class Solution {
public:int takeCharacters(string s, int k) {int cnt[3]{};for (char c : s){cnt [c - 'a']++;}if (cnt[0] < k || cnt[1] < k || cnt[2] < k) {return -1; // 字母个数不足 k}int mx = 0, left = 0;for(int right = 0; right < s.size(); ++right){char c = s[right] - 'a';cnt[c]--;while(cnt[c] < k){cnt[s[left] - 'a']++;left++;}mx = max(mx, right - left + 1);}return s.size() - mx;}
};

1.int cnt[3]{};是显式初始化,{} 表示全部初始化为0

2.正难则反思路,与其统计两边不如统计中间

二、1574. 删除最短的子数组使剩余数组有序

class Solution {
public:int findLengthOfShortestSubarray(vector<int> &arr) {int n = arr.size(), right = n - 1;while (right && arr[right - 1] <= arr[right])--right;if (right == 0) return 0; // arr 已经是非递减数组// 此时 arr[right-1] > arr[right]int ans = right; // 删除 0 到 right-1for (int left = 0; left == 0 || arr[left - 1] <= arr[left]; ++left) {while (right < n && arr[right] < arr[left])++right;// 此时 arr[left] <= arr[right],从 left+1 到 right-1 可以删除ans = min(ans, right - left - 1);}return ans;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词