日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LeetCode 795. Number of Subarrays with Bounded Maximum

發布時間:2025/5/22 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 795. Number of Subarrays with Bounded Maximum 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題鏈接

LeetCode 795

題目解析

給定一個數組A,左右范圍L、R。求子數組的數量,要求:子數組最大值在L、R之間。

解題思路

子數組必須連續,利用最大值R對數組進行分段,設定變量 left 記錄每段開始位置(\(A[left] > R\)\(A[left+1] ≤ R\)),初始值為-1。

遍歷數組,通過A[i]大小判斷:

  • 若 A[i] 在L、R之間,則 ans+=(i-j);
  • 若 A[i] 大于R,則更改左界 left=i;
  • 關鍵在于處理小于L的情況,由于需要子數組的最大值在L、R之間,單純的 A[i] 肯定不能算,需要知道最近合法的數字,即右界。設定變量 right 記錄合法的數字的右界(\(L ≤ A[right] ≤ R\)),當然,在A[i]大于R時,左界left和右界right都設置為i。這種情況下,ans += (i-left)-(i-right)。

參考代碼

class Solution { public:int numSubarrayBoundedMax(vector<int>& A, int L, int R) {int len = A.size();int ans = 0;int left = -1;//左界int right = -1;//最近合法位置for(int i=0; i<len; i++) {if(A[i] > R) {left = i;right = i;}else if(A[i]<L) {ans += (i-left)-(i-right);}else {ans += (i-left);right = i;}}return ans;} };

LeetCode All in One題解匯總(持續更新中...)

本文版權歸作者AlvinZH和博客園所有,歡迎轉載和商用,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.


轉載于:https://www.cnblogs.com/AlvinZH/p/8527214.html

總結

以上是生活随笔為你收集整理的LeetCode 795. Number of Subarrays with Bounded Maximum的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。