less than 1 minute read

Problem Statement

leetcode problem link

Brute Force [Accepted]

class Solution:
    def minMaxDifference(self, num: int) -> int:
        d = deque()
        dd = deque()
        max_temp = deque()
        min_temp = deque()
        while num > 0:
            digit = num % 10
            d.appendleft(digit)
            dd.appendleft(digit)
            max_temp.appendleft(digit)
            min_temp.appendleft(digit)
            num //= 10

        while max_temp and max_temp[0] == 9:
            max_temp.popleft()

        while min_temp and min_temp[0] == 0:
            min_temp.popleft()

        max_val = 0
        while d:
            val = d.popleft()
            if not max_temp or val == max_temp[0]:
                max_val = max_val * 10 + 9
            else:
                max_val = max_val * 10 + val

        min_val = 0
        while dd:
            val = dd.popleft()
            if not min_temp or val == min_temp[0]:
                min_val = min_val * 10
            else:
                min_val = min_val * 10 + val

        return max_val - min_val

Editorial

class Solution:
    def minMaxDifference(self, num: int) -> int:
        s = str(num)
        t = s
        pos = 0
        while pos < len(s) and s[pos] == "9":
            pos += 1
        if pos < len(s):
            s = s.replace(s[pos], "9")
        t = t.replace(t[0], "0")
        return int(s) - int(t)