题目如下:

解题思路:我的方法是从头开始遍历num,对于任意一个num[i],在[i+1~len(num)-1]区间内找出离num[i]最近并且小于num[i]的数num[j],如果j-i <= k的话表示num[j]可以被删除,同时记k -= 1;如果找不到num[j]或者j-i > k则表示不能被删除。如果num遍历完成,但是k>0的话,把num最后k个字符删除,即为最终结果。

代码如下:

class Solution(object):
def getNearbyMin(self,d,val):
inx = 10002
for i in range(val):
i = str(i)
if i in d and len(d[i]) > 0:
inx = min(inx,d[i][0])
return inx
def removeKdigits(self, num, k):
"""
:type num: str
:type k: int
:rtype: str
"""
import bisect
res = ''
dic = {}
for i,v in enumerate(num):
if v not in dic:
dic[v] = [i]
else:
bisect.insort_left(dic[v],i) for i, v in enumerate(num):
nextMinInx = self.getNearbyMin(dic,int(v))
if (nextMinInx-i) <= k:
k -= 1
else:
res += v
del dic[v][0]
if k > 0:
res = res[:len(res)-k]
if len(res) == 0:
res = ''
return str(int(res))

【leetcode】402. Remove K Digits的更多相关文章

  1. 【LeetCode】402. Remove K Digits 解题报告(Python)

    [LeetCode]402. Remove K Digits 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...

  2. leetcode 402. Remove K Digits 、321. Create Maximum Number

    402. Remove K Digits https://www.cnblogs.com/grandyang/p/5883736.html https://blog.csdn.net/fuxuemin ...

  3. 【LeetCode】738. Monotone Increasing Digits 解题报告(Python)

    [LeetCode]738. Monotone Increasing Digits 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu ...

  4. 【LeetCode】373. Find K Pairs with Smallest Sums 解题报告(Python)

    [LeetCode]373. Find K Pairs with Smallest Sums 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/p ...

  5. 【LeetCode】692. Top K Frequent Words 解题报告(Python)

    [LeetCode]692. Top K Frequent Words 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/top ...

  6. 【LeetCode】423. Reconstruct Original Digits from English 解题报告(Python)

    [LeetCode]423. Reconstruct Original Digits from English 解题报告(Python) 标签: LeetCode 题目地址:https://leetc ...

  7. 【LeetCode】722. Remove Comments 解题报告(Python)

    [LeetCode]722. Remove Comments 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/remove-c ...

  8. [LeetCode] 402. Remove K Digits 去掉K位数字

    Given a non-negative integer num represented as a string, remove k digits from the number so that th ...

  9. leetcode 402. Remove K Digits

    Given a non-negative integer num represented as a string, remove k digits from the number so that th ...

随机推荐

  1. leetcode-mid-array-31 three sum-NO

    my code:    time limited def threeSum(nums): """ :type nums: List[int] :rtype: List[L ...

  2. C# 内存建表备忘

    #region=====建表===== DataSet dataSet; // 创建表 DataTable table = new DataTable("testTable"); ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第3节 Random类_11-练习二_猜数字小游

    0到100之间的数字.猜多少次才能猜对最终的结果.大了或者小了都会告诉你. 二分法查找. 循环次数不确定用whilte true的方式去循环 前两种情况是需要重试的 把猜测的代码放在whilte循环里 ...

  4. vs2010自带的报表应用

    1.先创建一个本地的数据库,右键单击你的项目-->选择[Add]--->New Item--->Local database.创建数据库后,添加一个数据表T_student,添加一些 ...

  5. Jenkins持续集成_03_添加测试报告

    前言 Jenkins持续集成自动化测试项目后,可以在控制台输出中查看测试结果,但是这样排查起来往往不够直观.为了更直观的查看测试结果,可以在Jenkins上展示测试报告.测试报告中测试结果情况展示的更 ...

  6. 【python+selenium自动化】图像识别技术在UI自动化测试中的实际运用

    引言: 目前在图像识别方面的自动化测试框架有很多,其中比较有名的是airtest,主要做手机端的游戏自动化测试(http://airtest.netease.com/) 因为没有实际把airtest运 ...

  7. mysql5.7插入数据报错 Incorrect integer value

    mysql5.7插入字符串为空的时候取出来的值设置为null

  8. idea的类头注释和方法注释的编辑

    一:配置类头注释 1:点击file,点击settings 2:点击editor,选择 file and code template ,然后看右侧部分点击include,之后选中File Header ...

  9. It's strange. I felt less lonely when I didnt know you.

    feasible:adj. 可行的 bypass: v. 绕开,避开 eclipse: n. 月食 raw: adj. 生的 foresee:v. 预见 premier:n. 总理 ,adj: 首要的 ...

  10. <编译原理 - 函数绘图语言解释器(3)解释器 - python>

    <编译原理 - 函数绘图语言解释器(3)解释器 - python> <编译原理 - 函数绘图语言解释器(2)词法分析器 - python> <编译原理 - 函数绘图语言解 ...