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

2022-06-12 11:51:09 字數 1383 閱讀 6109

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

給你乙個整數陣列nums,和乙個表示限制的整數limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於limit

如果不存在滿足條件的子陣列,則返回0

示例 1:

輸入: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 。

示例 2:

輸入:nums = [10,1,2,4,7,2], limit = 5輸出:4解釋:滿足題意的最長子陣列是 [2,4,7,2],其最大絕對差 |2-7| = 5 <= 5 。
示例 3:

輸入:nums = [4,2,2,2,4,4,2,2], limit = 0輸出:3

基礎思路是記錄滑動視窗的最大值和最小值,因為最大值和最小值有最大的絕對值差。

方法一:使用multiset記錄滑動視窗內的元素,增刪的複雜度為o(logn),總時間複雜度為o(nlogn)

class

solution

ans = max(ans, r - l + 1

); }

return

ans;

}};

方法二:雙端佇列實現o(1)的增刪操作

class

solution

ans = max(ans, r -l);

}return

ans;

}};

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

絕對差不超過限制的最長連續子陣列 給你乙個整數陣列 nums 和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 如果不存在滿足條件的子陣列,則返回 0 示例 1 輸入 nums 8,2,4,7 limit 4 輸出 2 ...

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

給你乙個整數陣列 nums 和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 如果不存在滿足條件的子陣列,則返回 0 import j a.util.deque import j a.util.linkedlist cl...

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

link 給你乙個整數陣列 nums 和乙個表示限制的整數 limit,請你返回最長連續子陣列的長度,該子陣列中的任意兩個元素之間的絕對差必須小於或者等於 limit 如果不存在滿足條件的子陣列,則返回 0 輸入 nums 8,2,4,7 limit 4 輸出 2 解釋 所有子陣列如下 8 最大絕對...