给定数字N找到可以从给定数字位数创建的最大可能数字X.
示例:N = 231,然后X将为321。
限制是时间复杂度O(1) 和空间复杂度O(1)。
我认为这必须通过计算排序来完成。
答案 0 :(得分:2)
我能做的最好的是O(1)空间和O(log(N))时间。很确定它不可能做得更好,因为至少你必须分析输入中的每个数字,即log(N)就在那里。
简短的回答是,按降序排列N的数字。
伪代码:
示例Python实现:
N = 231
slots = [0,0,0,0,0,0,0,0,0,0]
while N > 0:
slots[N%10] += 1
N = int(N / 10)
result = ""
for slot_idx in range(10):
for i in range(slots[slot_idx]):
result = str(slot_idx) + result
print result
结果:
321