Skip to content

Commit 0c50b87

Browse files
authored
Create 2033-minimum-operations-to-make-a-uni-value-grid.js
1 parent 0a5d727 commit 0c50b87

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @param {number} x
4+
* @return {number}
5+
*/
6+
const minOperations = function(grid, x) {
7+
const arr = []
8+
const m = grid.length, n = grid[0].length
9+
for(let i = 0; i < m; i++) {
10+
for(let j = 0; j < n; j++) {
11+
arr.push(grid[i][j])
12+
}
13+
}
14+
arr.sort((a, b) => a - b)
15+
16+
for(let i = 1; i < m * n; i++) {
17+
if((arr[i] - arr[i - 1]) % x !== 0) return -1
18+
}
19+
const sum = arr.reduce((ac, e) => ac + e, 0)
20+
const pre = []
21+
pre.push(arr[0])
22+
for(let i = 1; i < m * n; i++) {
23+
pre[i] = pre[i - 1] + arr[i]
24+
}
25+
26+
let res = 0, num = 0, min = sum - arr[0] * m * n, idx = 0
27+
for(let i = 1; i < m * n; i++) {
28+
const cur = (i + 1) * arr[i] - pre[i] + (sum - pre[i] - arr[i] * (m * n - i - 1))
29+
// console.log(cur, (i + 1) * arr[i] - pre[i], sum - pre[i] - arr[i] * (m * n - i - 1))
30+
// const cur = sum - arr[i] * (m * n - i)
31+
if(cur < min) {
32+
idx = i
33+
min = cur
34+
}
35+
}
36+
37+
// console.log(idx)
38+
39+
for(let i = 0; i < m * n; i++) {
40+
if(i === idx) continue
41+
res += Math.abs(arr[i] - arr[idx]) / x
42+
}
43+
44+
return res
45+
};
46+
// 20 - 6 - 4 * 2
47+
// 2 4 6 8
48+
// 1 2 3 5
49+

0 commit comments

Comments
 (0)