diff --git a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README.md b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README.md index 8b89ac1c47017..999616c5a1702 100644 --- a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README.md +++ b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README.md @@ -36,7 +36,7 @@ tags: <pre> <strong>输入:</strong>grid = [[2,4],[6,8]], x = 2 <strong>输出:</strong>4 -<strong>解释:</strong>可以执行下述操作使所有元素都等于 4 : +<strong>解释:</strong>可以执行下述操作使所有元素都等于 4 : - 2 加 x 一次。 - 6 减 x 一次。 - 8 减 x 两次。 @@ -194,6 +194,44 @@ func abs(x int) int { } ``` +#### TypeScript + +```ts +function minOperations(grid: number[][], x: number): number { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +} +``` + +#### JavaScript + +```js +function minOperations(grid, x) { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +} +``` + <!-- tabs:end --> <!-- solution:end --> diff --git a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README_EN.md b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README_EN.md index 202e609bd8de3..69ac6cc530a98 100644 --- a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README_EN.md +++ b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/README_EN.md @@ -33,7 +33,7 @@ tags: <pre> <strong>Input:</strong> grid = [[2,4],[6,8]], x = 2 <strong>Output:</strong> 4 -<strong>Explanation:</strong> We can make every element equal to 4 by doing the following: +<strong>Explanation:</strong> We can make every element equal to 4 by doing the following: - Add x to 2 once. - Subtract x from 6 once. - Subtract x from 8 twice. @@ -186,6 +186,44 @@ func abs(x int) int { } ``` +#### TypeScript + +```ts +function minOperations(grid: number[][], x: number): number { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +} +``` + +#### JavaScript + +```js +function minOperations(grid, x) { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +} +``` + <!-- tabs:end --> <!-- solution:end --> diff --git a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.js b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.js new file mode 100644 index 0000000000000..43d9b37cd033c --- /dev/null +++ b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.js @@ -0,0 +1,14 @@ +function minOperations(grid, x) { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +} diff --git a/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.ts b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.ts new file mode 100644 index 0000000000000..e470b9bcdb6c9 --- /dev/null +++ b/solution/2000-2099/2033.Minimum Operations to Make a Uni-Value Grid/Solution.ts @@ -0,0 +1,14 @@ +function minOperations(grid: number[][], x: number): number { + const arr = grid.flat(2); + arr.sort((a, b) => a - b); + const median = arr[Math.floor(arr.length / 2)]; + + let res = 0; + for (const val of arr) { + const c = Math.abs(val - median) / x; + if (c !== (c | 0)) return -1; + res += c; + } + + return res; +}