18463102026 发表于 2019-12-5 15:06
输入 超时
sn8625 发表于 2019-12-5 15:41
解答错误
输入:
输出:998989796959291909089888888878584848383828181879797877777675747373737696767656362626166659585858565553515155555494544444342414141414141404383433303032925242221212021816141412121110111
预期结果:998989796959291909089888888887858484838382818179797877777767574737373696767666656362626159585858565555555535151494544444434241414141414140383433330302925242222121201816141412121111110
776667 发表于 2019-12-5 16:37
输入 超时
zltzlt 发表于 2019-12-5 20:47
解答错误
输入:
哦豁,漏掉一个 int()
def solve(nums:list)->int:
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
a,b = str(nums),str(nums)
if int(a+b) < int(b+a):
nums,nums = nums,nums
#print('调试',nums)
res = ''
for each in nums:
res += str(each)
return int(res)
if __name__ == '__main__':
print('示例1 8423201 输出:',solve())
print('示例1 6654 输出:',solve())
print('自测 6664 输出:',solve())
print('自测 输出:',solve())
闲愚 发表于 2019-12-5 20:06
以上例子均测试无误
输入 超时
阴阳神万物主 发表于 2019-12-5 21:02
哦豁,漏掉一个 int()
恭喜通过!
执行用时:151 ms
zltzlt 发表于 2019-12-5 21:03
输入 超时
深度太大了
四点好 发表于 2019-12-5 03:12
In : def fun(lst):
...: len1 = len(str(max(lst)))
...: lst2 = [(str(x), str(x ...
怎么不对呢
阴阳神万物主 发表于 2019-12-4 23:39
我那个数据,输入数据的最后两位交换一下,您这还是错的呢
结果:
是的,这点没有考虑到
zltzlt 发表于 2019-12-5 20:56
输入 超时
修改#每日一题文档,旨在练习Pyhon熟练度和提高算法
def fun284(list_Num = ,n = 10):
#n不能小于数组中元素位数最长的值
'''日期20191204
原文链接:https://fishc.com.cn/forum.php?mod=viewthread&tid=151816&highlight=%C3%BF%C8%D5%D2%BB%CC%E2
今天的题目:
给出一组非负整数,重新排列它们的顺序,把它们组成一个最大的整数。
示例 1:
输入:
输出:8423201
示例 2:
输入:
输出:6654
'''
#该问题只要判断出每个元素的‘大小就可以’
#比较方法是比较最左边的大小,如果相同切有下一位则比较下一位
#该方法比较大小可以通过转换为同一次级10**n,如65和6则转换为65和60
def buquan(num,len_num = n):
#将所有整数通过末尾加 原来末尾的最后一位 转换为长度相同的整数
if num != 0 :
while num <10**n-1:
num= num * 10 +num%10
return num
s = ''
list_Num.sort(key = buquan ,reverse = True)#将数字变为字符串降序
for i inlist_Num:
s += str(i)
return int(s)
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'%(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d' %(fun284(list_Num = )) )
======================== RESTART: E:\办公\代码\每日一题284.py ========================
输入为: 输出最大整数为:8423201
输入为: 输出最大整数为:6654
输入为: 输出最大整数为:292822822262242
输入为: 输出最大整数为:66661650595809
输入为: 输出最大整数为:2221
输入为: 输出最大整数为:6764
输入为: 输出最大整数为:310
输入为: 输出最大整数为:0
>>> 了下
四点好 发表于 2019-12-5 03:12
In : def fun(lst):
...: len1 = len(str(max(lst)))
...: lst2 = [(str(x), str(x ...
答案哪里错误了?最大值就是123121。
最新学习结果,看看这个怎么样from functools import cmp_to_key
def fun(s):
s.sort(key = cmp_to_key(lambda x,y:int(str(x)+str(y))-int(str(y)+str(x))),reverse = True)
return int(''.join(list(str(i) for i in s)))
本帖最后由 yile126 于 2019-12-9 22:20 编辑
我也来发一个:
def fun284(num_list):
list = []
reslut = ''
max_num = max(num_list)
for num in num_list:
if len(str(max_num)) == len(str(num)):
list.append()
else:
list.append(*(len(str(max_num))-len(str(num))),len(str(max_num))-len(str(num))])
list.sort(reverse=True)
for num in list:
reslut += num)-num]
return reslut
#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
num_list =
result = int(fun284(num_list))
print(result)
Unicorn# 发表于 2019-12-4 22:37
你好,可否解释一下这个代码!
ouyunfu 发表于 2020-3-23 16:28
你好,可否解释一下这个代码!
好久以前的代码了,写个注释叭
#原题需要最大排列,只需要将大的数放在靠前的数位,那么这些需要
#排进去的数字以 靠前的数字更大 的规则进行排序即可
def solve(nums):
class CapStr(str):
#'Cap' 取自 capital
def __lt__(self, value):
#魔法方法之 __it__(self, value):
# Return self<value
i = j = 0
while self == value:
#处理同一数位相同情况
if i < len(self)-1:
i += 1
if j < len(value)-1:
j += 1
if i == len(self)-1 and j == len(value)-1:
break
return self < value
return int(''.join(
sorted(
map(lambda x:CapStr(x), nums)
#把int变成CapStr
, reverse=True)
)
)
Unicorn# 发表于 2020-3-24 22:31
好久以前的代码了,写个注释叭
谢谢!