• leetcode_402_ 移掉K位数字


    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
    
    注意:
    
    num 的长度小于 10002 且 ≥ k。
    num 不会包含任何前导零。
    示例 1 :
    
    输入: num = "1432219", k = 3
    输出: "1219"
    解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。
    示例 2 :
    
    输入: num = "10200", k = 1
    输出: "200"
    解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
    示例 3 :
    
    输入: num = "10", k = 2
    输出: "0"
    解释: 从原数字移除所有的数字,剩余为空就是0。
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-k-digits
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    #暴力:O(n*k)
    class Solution:
        def removeKdigits(self, num: str, k: int) -> str:
            #如果前面的数大于后面的数,则删除,否则是递增,删除最后一个
            for i in range(k):
                for j in range(len(num)):
                    if j<len(num)-1 and num[j]>num[j+1]:
                        num=num[:j]+num[j+1:]
                        break
                    if j==len(num)-1:
                        num=num[:j]
            i=0
            #删除前面的‘0’
            for x in num:
                if x=='0':
                    i+=1
                else:
                    break
            num=num[i:]
            if num=='' :num='0'
            return num
    
    #方法2:利用栈(列表模拟)O(n)
    #考虑从左往右增量的构造最后的答案。我们可以用一个栈维护当前的答案序列,栈中的元素代表截止到当前位置,删除不超过 k次个数字后,所能#得到的最小整数。根据之前的讨论:在使用 k个删除次数之前,栈中的序列从栈底到栈顶单调不降。
    #因此,对于每个数字,如果该数字小于栈顶元素,我们就不断地弹出栈顶元素,直到
    #栈为空或者新的栈顶元素不大于当前数字或者我们已经删除了 k 位数字
    class Solution:
        def removeKdigits(self, num: str, k: int) -> str:
            a=[]
            for x in num:
                while k and a and a[-1]>x:
                    k-=1
                    a.pop()
                a.append(x)
            while k>0:
                a.pop()
                k-=1
            s=''.join(a)
            s=s.lstrip('0')
            if s=='':s='0'
            return s
    
  • 相关阅读:
    HTML之元素分类(HTML基础知识)
    GreenPlum 与hadoop什么关系?(转)
    安装配置MySQL
    Linux下安装jdk步骤
    Linux ssh无密码登录
    左右无间切换走马灯angularJS指令
    CSS3制作立方体--有趣的应用
    hello,2017
    渐进增强与优雅降级
    图片上传预览(包含大小压缩)
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/13976651.html
Copyright © 2020-2023  润新知