Skip to content

Commit f41ab0b

Browse files
committed
https://leetcode.cn/problems/minimum-absolute-difference-queries/
1 parent 3e74884 commit f41ab0b

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ leetcode 测试
1010

1111
##### 包含的内容如下
1212

13+
https://leetcode.cn/problems/minimum-absolute-difference-queries/
14+
1315
https://leetcode.cn/problems/boolean-evaluation-lcci/
1416

1517
https://leetcode.cn/problems/build-an-array-with-stack-operations/

image-overlap/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export default function largestOverlap(
22
img1: number[][],
3-
img2: number[][]
3+
img2: number[][],
44
): number {
55
const len = img1.length;
66
const count: number[][] = Array(2 * len + 1)
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
export default function minDifference(
2+
nums: number[],
3+
queries: number[][],
4+
): number[] {
5+
const n = nums.length;
6+
7+
const presum = Array(100)
8+
.fill(0)
9+
.map(() => Array<number>(n).fill(0));
10+
11+
for (let k = 1; k <= 100; k++) {
12+
for (let i = 0; i < n; i++) {
13+
presum[k - 1][i] = (i == 0 ? 0 : presum[k - 1][i - 1]) +
14+
Number(nums[i] == k);
15+
}
16+
}
17+
18+
return queries.map(([left, right]) => {
19+
const arr = Array<number>();
20+
for (let k = 1; k <= 100; k++) {
21+
const count = presum[k - 1][right] -
22+
(left == 0 ? 0 : presum[k - 1][left - 1]);
23+
24+
if (count) {
25+
arr.push(k);
26+
}
27+
28+
if (
29+
arr.length >= 2 &&
30+
arr[arr.length - 1] - arr[arr.length - 2] == 1
31+
) {
32+
return 1;
33+
}
34+
}
35+
if (arr.length <= 1) return -1;
36+
else {
37+
return Math.min(
38+
...arr.map((v, i, a) => (i === 0 ? Infinity : v - a[i - 1])),
39+
);
40+
}
41+
});
42+
}

0 commit comments

Comments
 (0)