打卡记录
找出满足差值条件的下标 II(双指针+维护最大最小)
链接
采用双指针保留间隔 indexDifference 进行遍历,求出慢指针对应一路遍历过来的最大值和最小值。
class Solution {
public:vector<int> findIndices(vector<int>& nums, int indexDifference, int valueDifference) {int min_idx = 0, max_idx = 0;for (int i = indexDifference; i < nums.size(); ++i) {int j = i - indexDifference;if (nums[j] > nums[max_idx]) max_idx = j;if (nums[j] < nums[min_idx]) min_idx = j;if (nums[i] - nums[min_idx] >= valueDifference) return {min_idx, i}; if (nums[max_idx] - nums[i] >= valueDifference) return {i, max_idx};}return {-1, -1};}
};