2905. Find Indices With Index and Value Difference II
T: O(n)
S: O(1)```java
class Solution {
public int[] findIndices(int[] nums, int idxDiff, int valueDiff) {
int n = nums.length;
int maxIdx = 0;
int minIdx = 0;
int max = nums[0];
int min = nums[0];
//. x
// [5,1,4,1]
for (int i = idxDiff; i < n; i++) { // start from diff
if (nums[i - idxDiff] > max) { // find current max, max = 5
max = nums[i - idxDiff];
maxIdx = i - idxDiff;
}
if (nums[i - idxDiff] < min) { // find current min, min = 1, minidx = 3
min = nums[i - idxDiff];
minIdx = i - idxDiff;
}
if (Math.abs(nums[i] - nums[maxIdx]) >= valueDiff) { // check abs(current - max), 5 - 1 = 4
return new int[] {maxIdx, i};
}
if (Math.abs(nums[i] - nums[minIdx]) >= valueDiff) { // check abs(current - min)
return new int[] {minIdx, i};
}
}
return new int[] {-1, -1};
}
}
/**
actually a min max problem
T: O(n)
S: O(1)
*/
```using TreeMap
mimic for 2817
T: O(nlogn)
S: O(n)
Last updated
Was this helpful?