link
給你乙個整數陣列 nums ,和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 。
如果不存在滿足條件的子陣列,則返回 0 。
輸入:nums = [8,2,4,7], limit = 4
輸出:2
解釋:所有子陣列如下:
[8] 最大絕對差 |8-8| = 0 <= 4.
[8,2] 最大絕對差 |8-2| = 6 > 4.
[8,2,4] 最大絕對差 |8-2| = 6 > 4.
[8,2,4,7] 最大絕對差 |8-2| = 6 > 4.
[2] 最大絕對差 |2-2| = 0 <= 4.
[2,4] 最大絕對差 |2-4| = 2 <= 4.
[2,4,7] 最大絕對差 |2-7| = 5 > 4.
[4] 最大絕對差 |4-4| = 0 <= 4.
[4,7] 最大絕對差 |4-7| = 3 <= 4.
[7] 最大絕對差 |7-7| = 0 <= 4.
因此,滿足題意的最長子陣列的長度為 2 。
class
solution
maxq.
add(end)
;//右沿元素進入視窗、維護最小值單調佇列
while
(!minq.
isempty()
&& nums[minq.
peeklast()
]>nums[end]
) minq.
add(end)
;//如果當前視窗的最大值最小值的差大於 limit,則不斷縮小視窗(左沿++),直至最大值變小或者最小值變大從而滿足 limit 限制
while
(!maxq.
isempty()
&&!minq.
isempty()
&& nums[maxq.
peek()
]-nums[minq.
peek()
]>limit)
ans = math.
max(ans,end-start+1)
;}return ans;
}}
LC 1438 絕對差不超過限制的最長連續子陣列
給你乙個整數陣列 nums 和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 如果不存在滿足條件的子陣列,則返回 0 樣例輸入 nums 8,2,4,7 limit 4 輸出 2 解釋 所有子陣列如下 8 最大絕對差 8...
1438 絕對差不超過限制的最長連續子陣列
絕對差不超過限制的最長連續子陣列 給你乙個整數陣列 nums 和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 如果不存在滿足條件的子陣列,則返回 0 示例 1 輸入 nums 8,2,4,7 limit 4 輸出 2 ...
1438 絕對差不超過限制的最長連續子陣列
1438.絕對差不超過限制的最長連續子陣列 給你乙個整數陣列nums,和乙個表示限制的整數limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於limit。如果不存在滿足條件的子陣列,則返回0。示例 1 輸入 nums 8,2,4,7 limit 4輸出 2解...