Max Difference You Can Get From Changing an Integer LeetCode solution in C++

1
class Solution {
2
public:
3
int power10(int n) {
4
int total = 1;
5
for (int i = 0; i < n; i++) {
6
total *= 10;
7
}
8
return total;
9
}
10

11
int maxDiff(int num) {
12
vector<int> v;
13
vector<int> w;
14
int n = num;
15
while (n > 0) {
16
v.push_back(n % 10);
17
w.push_back(n % 10);
18
n /= 10;
19
}
20

21
// Finding maximum number
22
int d = v.size();
23
int j = d - 1;
24
for (int i = d - 1; i >= 0; i--) {
25
if (v[i] != 9) {
26
j = i;
27
break;
28
}
29
}
30

31
for (int i = 0; i <= j; i++) {
32
if (v[i] == v[j]) {
33
v[i] = 9;
34
}
35
}
36
long long int res = 0;
37
for (int i = d - 1; i >= 0; i--) {
38
res += (v[i] * power10(i));
39
}
40

41
// Finding minimum number
42
int t = w.size();
43
if (w[t - 1] == 1) {
44
int l = -1;
45
for (int i = t - 2; i >= 0; i--) {
46
if (w[i] != 0 && w[i] != 1) {
47
l = i;
48
break;
49
}
50
}
51
for (int i = 0; i <= l; i++) {
52
if (w[i] == w[l]) {
53
w[i] = 0;
54
}
55
}
56
} else {
57
for (int i = 0; i < t; i++) {
58
if (w[i] == w[t - 1]) {
59
w[i] = 1;
60
}
61
}
62
}
63
long long int res2 = 0;
64
for (int i = t - 1; i >= 0; i--) {
65
res2 += (power10(i) * w[i]);
66
}
67
return res - res2;
68
}
69
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0