From d39bae7e2e70b5658e96204f9bd61f4e7cb25d48 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Fri, 13 Jun 2025 23:29:00 -0600 Subject: 2566. maximum difference by remapping a digit --- max_diff_remap_digit.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 max_diff_remap_digit.c (limited to 'max_diff_remap_digit.c') diff --git a/max_diff_remap_digit.c b/max_diff_remap_digit.c new file mode 100644 index 0000000..3eff54a --- /dev/null +++ b/max_diff_remap_digit.c @@ -0,0 +1,30 @@ +// 2566. Maximum Difference by Remapping a Digit +#include "leetcode.h" + +/* + * you are given an integer 'num'. you know that bob will sneakily remap one of + * the 10 possible digits to another digit. return the difference between the + * maximum and minimum values bob can make by remapping exactly one digit in + * nums. + */ + +int minMaxDifference(int num) { + int min = num, max = num; + for (int i = 0; i < 10; ++i) { + int low = 0, high = 0, mult = 1; + for (int j = num; j; j /= 10) { + bool replace = j % 10 == i; + low += (replace ? 0 : j % 10) * mult; + high += (replace ? 9 : j % 10) * mult; + mult *= 10; + } + min = fmin(min, low); + max = fmax(max, high); + } + return max - min; +} + +int main() { + printf("%d\n", minMaxDifference(11891)); // expect: 99009 + printf("%d\n", minMaxDifference(90)); // expect: 99 +} -- cgit v1.2.3