途家算法编程题第一道python AC 40%原因

n,m=list(map(int,input().strip().split()))
s=str(n)
slist=[]#储存n中的每一个字符
for c in s:
    slist.append(c)
l=list(map(int,slist))#储存n中每一位的数
Res=[]#储存int型的最终结果
res=[]#储存每一次寻找最大数字时的子序列
begin=0
end=m+1
for i in range(len(l)-m):
    for j in range(begin,end):
        res.append(l[j])
    #print(res)
    Res.append(max(res))
    begin=1+l.index(max(res))#更新起点位置
    end+=1#更新终点位置
    res=[]#重置空列表
RES=list(map(str,Res))
print(int(''.join(RES)))

思路相同的C++代码可以AC,但python只能过40……求大佬来帮忙挑挑错。。。
示例数据也过了,,

示例数据:
92081346717538 10
输出:9878

#途家网##笔试题目##Python#
全部评论
python index只会返回重复元素的第一次出现的索引  我也是这个问题 到最后才发现
点赞 回复 分享
发布于 2019-09-06 23:32
这个我也是卡了,等卷子提交了才反应过来,唉我太菜了
点赞 回复 分享
发布于 2019-09-07 00:20
你输出一下看一下每次你计算数组的范围就知道哪错了,index不对的
点赞 回复 分享
发布于 2019-09-07 01:14
啥思路啊没看懂
点赞 回复 分享
发布于 2019-09-07 02:27
根据一楼大佬提出来的问题改的,,应该对了,,可惜不能测试一下了 n,m=list(map(int,input().strip().split())) s=str(n) slist=[]#储存n中的每一个字符 for c in s:   slist.append(c) l=list(map(int,slist))#储存n中每一位的数 Res=[]#储存int型的最终结果 begin=0 end=m+1 max1=-1 for i in range(len(l)-m):     for j in range(begin,end):         if l[j]>max1:             max1=l[j]             begin=1+j#更新起点位置     Res.append(max1)         end+=1#更新终点位置     max1=-1 RES=list(map(str,Res)) print(int(''.join(RES)))
点赞 回复 分享
发布于 2019-09-07 22:32

相关推荐

点赞 评论 收藏
分享
评论
3
2
分享
牛客网
牛客企业服务