Вот сценарий.
Мне дан массив 'A' целых чисел. Размер массива не фиксирован. Функция, которую я должен написать, может быть вызвана один раз с массивом из нескольких целых чисел, а в другой раз она может даже содержать тысячи целых чисел. Кроме того, каждое целое число не обязательно должно содержать одинаковое количество цифр.
Я должен «отсортировать» числа в массиве так, чтобы в результирующем массиве были целые числа, упорядоченные лексикографическим образом (т.е. они отсортированы на основе их строковых представлений. Здесь «123» - строковое представление 123) , Обратите внимание, что выходные данные должны содержать только целые числа, а не их строковые эквиваленты.
Например: , если ввод:
[12 | 2434 | 23 | 1 | 654 | 222 | 56 | 100000]
Тогда вывод должен быть:
[1 | 100000 | 12 | 222 | 23 | 2434 | 56 | 654]
Мой первоначальный подход: Я преобразовал каждое целое число в его строковый формат, затем добавил нули справа от него, чтобы все целые числа содержали одинаковое количество цифр (это был грязный шаг, так как он включал отслеживание и т. Д. что делает решение очень неэффективным), а затем сделал основную сортировку.
Наконец, я удалил дополненные нули, преобразовал строки обратно в их целые числа и поместил их в получившийся массив. Это было очень неэффективное решение.
Меня убеждают, что решение не нуждается в заполнении и т. Д., И есть простое решение, в котором вам просто нужно как-то обработать числа (некоторая обработка битов?), Чтобы получить результат.
Какое космическое наиболее эффективное решение вы можете придумать? Время-накрест?
Если вы даете код, я бы предпочел Java или псевдокод. Но если вас это не устраивает, любой такой язык должен подойти.