前言

比如说 1593212,去掉一个数字后,保留的是最小值。

原理:因为要保留最小值,那么要删除最高位的数字是最明显的。

那么1和5到底删除哪一个呢?当然是删除最大值了。

代码

public static int AfterdeleteKeys(int init,int keys)
{
string temp = init.ToString();
if (temp.Length <= keys)
{
return 0;
}
var hasdel = false;
for (; keys > 0;)
{
hasdel = false;
for (int i = 0; i < temp.Length-1; i++)
{
if (temp[i]>=temp[i+1])
{
hasdel = true;
temp = temp.Substring(0, i) + temp.Substring(i+1,temp.Length-i-1);
keys--;
break;
}
}
if (!hasdel)
{
break;
}
}
temp= temp.Substring(0,temp.Length-keys);
return Convert.ToInt32(temp);
} static void Main(string[] args)
{
Console.WriteLine(AfterdeleteKeys(123467,1));
Console.ReadKey();
}

上面效率并不高。

优化,将char[] 物理结构转换为 stack 逻辑逻辑。

public static int AfterdeleteKeys(int init, int keys)
{
var temp = init.ToString();
if (keys >= temp.Length)
{
return 0;
}
char[] stack = new char[temp.Length - keys];
var top = 0;
for (int i = 0; i < temp.Length; i++)
{
char c=temp[i];
if (top > 0 && stack[top - i] > c && keys > 0)
{
top--;
keys--;
}
if (top < stack.Length)
{
stack[top] = c;
top++;
}
else
{
break;
}
}
var offset = 0;
while (offset < stack.Length && stack[offset] == '0')
{
offset++;
}
return offset == stack.Length ? 0 :Convert.ToInt32(new String(stack,offset,stack.Length-offset));
} static void Main(string[] args)
{
Console.WriteLine(AfterdeleteKeys(123467,1));
Console.ReadKey();
}

刪除k个数字后的最小值的更多相关文章

  1. 删去k个数字后的最小值

    public static String removeKDigits(String num,int k) { //新整数的最终长度=原长度 - k int newLength=num.length() ...

  2. [LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字

    You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Define ...

  3. [SOJ]寻找第k大数字(numberk)

    Description 经过长时间的筹备工作,在Jourk,Ronny,Plipala,阿长,阿沈等人的努力下,DM实验室建立起自己的系列网站,其中包括三个大板块:DMOJ首页.DMOJ论坛.DMOJ ...

  4. 找到排序矩阵中从小到大第K个数字

    一 题目描述 在一个排序矩阵中找从小到大的第 k 个整数. 排序矩阵的定义为:每一行递增,每一列也递增. 二 题解 由于排序矩阵中的每一行都是递增的,并且每一列都是递增的.从小到大第k个数,实际上就是 ...

  5. (笔试题)删除K位数字

    题目: 现有一个 n 位数,你需要删除其中的 k 位,请问如何删除才能使得剩下的数最大? 比如当数为 2319274, k=1 时,删去 2 变成 319274 后是可能的最大值. 思路: 1.贪心算 ...

  6. 算法46----移除K位数字

    一.题目:移除K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示 ...

  7. 440. 字典序的第K小数字 + 字典树 + 前缀 + 字典序

    440. 字典序的第K小数字 LeetCode_440 题目描述 方法一:暴力法(必超时) package com.walegarrett.interview; /** * @Author WaleG ...

  8. excel如何设置输入数字后单元格自动填充颜色

    在使用excel的过程中,有时需要在输入数字时,突出显示这些单元格,突出显示可以用有填充颜色的单元格来表示.为了实现这样的效果,需要借助excel的条件格式. 工具/原料 电脑 Excel 2010 ...

  9. 面试题:m个长度为n的ordered array,求top k 个 数字

    package com.sinaWeibo.interview; import java.util.Comparator; import java.util.Iterator; import java ...

  10. Hulu面试题解答——N位数去除K个数字(解法错误sorry)

    给定一个N位数,比如12345,从里面去掉k个数字.得到一个N-k位的数.比如去掉2,4,得到135,去掉1,5.得到234.设计算法.求出全部得到的N-k位数里面最小的那一个. 写的代码例如以下,思 ...

随机推荐

  1. ElasticSearch基本查询使用(2)

    在介绍本章之前,需要先打开安装的Kibana页面, 并打开命令行工具页面: 并且根据上节的介绍,我们需要根据中文搜索,所以需要在建立映射时,指定中文字段的分词器为Ik分词器, 默认为英文分词器,每个中 ...

  2. SpringBoot2.x 启动过程详解

    spring 简化了java应用开发, 而springboot则简化了 spring应用的开发,用约定优于配置优于编码的方式快速构建spring对其他框架的整合. 官方文档 探究Hello,World ...

  3. [VueJsDev] 其他知识 - 单词本

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html 单词本z 这里的单词就是很随性的记忆,来源有生活中能见到的, ...

  4. 摆脱鼠标系列 - 用git命令提交代码

    需求 最近开始改变用鼠标的习惯,之前一直是用鼠标点击vscode,点击提交 现在不用鼠标,改用命令行,命令很简单,主要是习惯的改变 实现 vscode环境 ctrl + ` 快捷键打开命令行 git ...

  5. arch安装xfce4的时候,出现无法设置开机启动的问题

    sudo systemctl enable lightdm   Failed to enable unit: File /etc/systemd/system/display-manager.serv ...

  6. 基于python的opus编解码实力解析

    一 opus   pyogg是一个非常不错的库,用这个做音频的编码和解码非常方便.   二 源码解析   import wave from pyogg import OpusEncoder from ...

  7. kettle教程--通过配置文件同步所需要的列数据

    kettle教程--通过配置文件同步所需要的列数据 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「kettle」, 免费领取全网最热的kettle实战视频教程 ht ...

  8. day09-Java数组

    Java数组 9.稀疏数组 什么是稀疏数组? 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方式是: 记录数组一共有几行几列,有多少个不同的值 把具有 ...

  9. YUV亮度扫描小工具,如何确定尺寸以及错误尺寸下图像发生什么变化

    地址https://github.com/bbqz007/zhelper-wxWidgets 当你有一个帧yuv,但却不知道长宽还有格式时,本demo可以帮你通过扫描Y分量灰度图,确定长宽,然后选择合 ...

  10. XMLSpringEclipseWebCache

    XMLSpringEclipseWebCache XMLSpy编辑工具中如何设置XML的DTD/XSD校验指向本地,而不要直接指向网络去? 前提:在不修改XML的条件下,修改XML的,不要这个,这个变 ...