日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 795. Number of Subarrays with Bounded Maximum

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

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