博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
保留最大的数
阅读量:3930 次
发布时间:2019-05-23

本文共 378 字,大约阅读时间需要 1 分钟。

题目描述

给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。

 

a=str(input())

b=m=int(input())
sta=[]
for i in a:
    while len(sta)!=0 and sta[-1]<i and m>0:
        m-=1
        sta.pop()
    sta.append(i)
print(''.join(sta[:len(a)-b]))
 

因为想要最后剩下的数尽量大,所以贪心地从前往后找到某位数比后一位小就删掉这个数,但是这样需要 O(n*m) (n 是总位数,m 是删除的个数)。我们可以利用一个栈来达到 O(n)的时间复杂度:遍历每一位,当还能删除时且栈内的数比当前数小就出栈,直到栈内的数比当前数大,或者栈空,就将当前的数入栈。如果全部数都入过栈时还需要删除,那就从栈顶删。

 

转载地址:http://oftgn.baihongyu.com/

你可能感兴趣的文章
[统计学笔记] 方差分析表的解读
查看>>
[统计学笔记] (十三)指数分析(1)
查看>>
[统计学笔记] 参数估计和假设检验计算题精讲
查看>>
[数据挖掘与预测分析] 单变量统计分析思考问题
查看>>
[统计学笔记] (十三)指数分析(2)
查看>>
Data Science 到底是什么?
查看>>
机器学习(Machine Learning)和传统的数据统计分析(Data Statistics)有什么区别?
查看>>
统计学、统计学习和统计推断之间的关系
查看>>
数据挖掘(Data Mining)和数据分析(Data Analysis)的对比
查看>>
[敏捷开发实践] 敏捷团队如何应对Product Owner不断变化的需求
查看>>
[敏捷开发实践] 为什么开发人员不愿意写单元测试?
查看>>
[敏捷开发实践] 端到端测试你了解多少?
查看>>
API 测试你所需要知道的……
查看>>
[哪些年玩 Spring Boot 时踩过的坑] application.yml 文件格式错误引发的错误信息
查看>>
质量保证的新方法:TestOps 概念、原则、方法
查看>>
谈谈端到端测试(End-to-End Testing)
查看>>
DevOps对于测试团队意味着什么?
查看>>
pip 命名备忘录
查看>>
解读 Flaky Test
查看>>
测试计划模板——Test Plan(中英文)
查看>>