前往
大廳
主題

(Medium)Leetcode 2033. Minimum Operations to Make a Uni-Value Grid

光陰LD | 2025-03-26 09:38:08 | 巴幣 2 | 人氣 10

Description:
給定一個m*n的矩陣跟x,如何使用最少的+x/-x讓grid內的所有數字相同
思考:
最後的uni-value一定會出現在既有的數字當中嗎?
先假設會好了,我也想不到不會的狀況
===
看了HINT,用最naive的想法做出來了
若有任一數%x的餘數與其它數字不同,那就不可能完成(再怎樣都彌補不了)
把陣列弄成1維的,sort,取中位數出來操作,end
===
昨天半夜突然收到訊息,人生關鍵節點++
焦慮,興奮
希望能快點把論文搞定

class Solution:
    def minOperations(self, grid: List[List[int]], x: int) -> int:
        m = len(grid)
        n = len(grid[0])
        reminder = grid[0][0] % x
        nums = []
        for i in range (m):
            for j in range (n):
                # 若餘數不同那就根本不可能做到
                if grid[i][j] % x != reminder:
                    return -1
                nums.append(grid[i][j])
        nums.sort()
        min_operation = 0
        # 奇數case
        if m*n % 2 == 1:
            for i in range(len(nums)):
                min_operation += abs(nums[i] - nums[len(nums)//2]) // x
        # 偶數case
        else:
            temp0, temp1 = 0, 0
            for i in range(len(nums)):
                temp0 += abs(nums[i] - nums[len(nums)//2]) // x
                temp1 += abs(nums[i] - nums[len(nums)//2-1]) // x
            min_operation = min(temp0, temp1)
        return min_operation
送禮物贊助創作者 !
0
留言

0則留言

更多創作