去掉K位求取最小数 一个n位的数,去掉其中的k位,怎样使留下来的(n-k)位数按原来的前后顺序组成的数最小 例如 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123. 解决方案 贪心算法,在每次被访问的位置保证有最优解. 思路一 分析:求一共n位,求其中的m位组成的数最小.那么这个m位的数,最高位应该在原数的最高位到第m位区间找,要不然就不能当第m位了,如下图(得到3位数最小,要是百位数在25中找,就当不了百位数了): 同样找十位数时只能在百味数到目前位置中间…
Given a non-negative integer num represented as a string, remove k digits from the number so that the new number is the smallest possible. Note: The length of num is less than 10002 and will be ≥ k. The given num does not contain any leading zero. Ex…
Given a non-negative integer num represented as a string, remove k digits from the number so that the new number is the smallest possible. Note: The length of num is less than 10002 and will be ≥ k. The given num does not contain any leading zero. Ex…
1 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”.是不是很简单?OK,搞定它! 2 思路和方法 str=erase(pos,n);  //删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符. str1=s.substr(0,n);  //获得字符串s中 …
题目描述 给定一个正整数(<=255位),从中删去n位后,使得剩下的数字组成的新数最小(大): 思路:从左到右开始扫描,两两比较,如果是前一位比后一位大,则删去前大的一位,直到删完所有的n位: [从论坛看到的一个题目,觉得挺好的,代码是论坛的大佬写的,不过好像没处理好以0开头的问题.] 再贴一个c写的吧,这也写得挺好的:https://blog.csdn.net/liveas/article/details/5732759 public static void main(String[] arg…
function digit(num,k){         var knum = 0;         for(var i=1; i<=k; i++){                 knum = num%10;                 num = parseInt(num/10);         }         return knum; }…
实例二:取n的第k位 方法:a>> k & 1 某值a右移K位后与整数“1”进行与运算.即把需要第几位就右移几位. 例子: 0000 1000 ------8右移3位 0000 0001 ------1与1进行与操作 0000 0001 ------1 结果:   0000 0001 ------1 代码:int _tmain(int argc, _TCHAR* argv[]){ int nValue,k,nResult=0; cout << "请输入要进行处理的…
例如 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123. 解决方案 贪心算法,在每次被访问的位置保证有最优解. 思路一 分析:求一共n位,求其中的m位组成的数最小.那么这个m位的数,最高位应该在原数的最高位到第m位区间找,要不然就不能当第m位了,如下图(得到3位数最小,要是百位数在25中找,就当不了百位数了): 同样找十位数时只能在百味数到目前位置中间搜,整个过程图示如下: 注意 在区间有多个最小值,取距离最大的,保证下一位数有足够大的查找空间. 参考代码…
给定一个N位数,比如12345,从里面去掉k个数字.得到一个N-k位的数.比如去掉2,4,得到135,去掉1,5.得到234.设计算法.求出全部得到的N-k位数里面最小的那一个. 写的代码例如以下,思路是通过堆排序得到N位数里边最大的前K个数,然后依照原数字的顺序去除得到的最大的K个数. 感觉写的非常乱,可能还有些小问题,鲁棒性应该非常差,努力锻炼..努力提高. typedef unsigned int uint; //Heap adjust function void HeapAdjust(u…