博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】402. Remove K Digits
阅读量:6545 次
发布时间:2019-06-24

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

题目如下:

解题思路:我的方法是从头开始遍历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 = '0'        return str(int(res))

 

转载于:https://www.cnblogs.com/seyjs/p/9371175.html

你可能感兴趣的文章
自我实现简易的智能指针
查看>>
所有exe文件程序关联都被默认修改为pdf,的解决方法
查看>>
学习设计模式——观察者模式
查看>>
什么是centos 的epel源
查看>>
删除LVM步骤
查看>>
Zookeeper客户端
查看>>
linux常用指令
查看>>
前段优化——雅虎的14条优化规则
查看>>
Oracle使用PLSQL连接时,导入导出问题
查看>>
string.format() 的使用
查看>>
DrawerLayout打开时,底部视图仍然能被单击的问题
查看>>
Percona-mysql MHA高可用实战方案
查看>>
云风<<代码大全>>读书笔记
查看>>
JS 类型分类,不同类型值比较的区别
查看>>
iCarousel简介
查看>>
Script:收集Flashback Database Log诊断信息
查看>>
org.apache.tomcat.dbcp.dbcp.SQLNestedException
查看>>
oracle RAC 错误信息 prkh-1010
查看>>
可重复分组报表
查看>>
【Hadoop】- MapReduce 框架详细介绍
查看>>