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)