leetcode2334 元素值大于变化阈值的子数组
给定数组nums[n]和整数threshold,找到长度为k的子数组,满足子数组中每个元素都大于threshold/k,返回满足条件的任意一个k即可,如不存在,返回-1。
1<=n<=1e5; 1<=nums[i],threshold<=1e9
子数组每个元素都大于t,也就是最小值大于t。对于固定的最小值,显然子数组越长越有可能满足条件,因此考虑每个元素作为最小值的情况,尽可能的往两边延伸,判断是否能成为答案。使用半开半闭区间避免重复统计。
class Solution { public: int validSubarraySize(vector<int>& nums, int threshold) { int n = nums.size(); vector<int> L(n), R(n), s; for (int i = 0; i < n; i++) { while (!s.empty() && nums[i] <= nums[s.back()]) s.pop_back(); L[i] = s.empty() ? -1 : s.back(); s.push_back(i); } s.clear(); for (int i = n-1; i >= 0; i--) { while (!s.empty() && nums[i] < nums[s.back()]) s.pop_back(); R[i] = s.empty() ? n : s.back(); s.push_back(i); } for (int i = 0; i < n; i++) { if (1LL * nums[i] * (R[i]-L[i]-1) > threshold) return R[i]-L[i]-1; } return -1; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】