• • Write a code in c++ that transformed  a numbers into maximum numbers? for example if you are given a number 1214678 the the output of your program should be 8764211.

Solution with O(N) complexity

1. Create an array of length 10, int arr
2. convert the number into single digits. “1214678” { 1,2,1,4,6,7,8}
3. update the frequency of digit in arr.

arr[]  0 1 2 3 4 5 6 7 8 9

freq 0  2 1 0 1 0 1 1 1 0

1. print the array index from last to first. during printing repeat the index according to its frequency. if frequency is 0 do not print. for example if we print arr[] index from last to first , as we can see, 9th index has 0 frequency so it will not be printed. same as 8th index is having frequency 1 , then 8 will be printed. Note: look at the first index , its frequency is 2 so 1 will be printed 2 times.

Here is c implementation of above logic:

```#include<stdio.h>
#include<string.h>

#define N 10

int convert(int num);
int arr[N];

int convert_arr_into_unmber(int arr[N]);

int main() {
int num = 1214678;
// init arr to 0
memset(arr, 0, sizeof(arr));

convert(num);
return 0;
}

int convert(int num) {
int last_digit = 0;

if (num == 0)
return 0;

while (num) {
last_digit = num % 10;

// increment the frequency of last_digit in arr
arr[last_digit]++;

num = num / 10;
}
convert_arr_into_unmber(arr);
}

int convert_arr_into_unmber(int arr[N]) {
int i = 0;
int j = 0;
int frequency_of_i;

for (i = 9; i >= 0; i--) {
if (arr[i]) {
while (arr[i]--)
printf("%d", i);
}
}
printf("\n");
}
```