lc1438 絕對差不超過限制的最長連續子陣列

2021-10-05 19:00:12 字數 1165 閱讀 7330

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解...