/**
* 给定一个以字符串表示的数字 num 和一个数字 k
* 从 num 中移除 k 位数字
* 使得剩下的数字最小。
* 如果可以删除全部数字则剩下 0
* <p>
* 比对插入位置之前的所有数字,如果大于则删掉其中最大的,小于则换掉比他更大的全部
*
* @param num string字符串
* @param k int整型
* @return string字符串
*/
public String removeKnums(String num, int k) {
//如果不删元素,则直接返回原数字。
if (k == 0) {
return num;
}
//如果数字长度等于要删除的数量则直接返回0
if (num.length() == k) {
return "0";
}
//已删除的元素数量
int removeNum = 0;
//退出循环的位置
int index = 0;
//用于存储合适元素的栈
Stack<Character> stack = new Stack<>();
for (int i = 0; i < num.length(); i++) {
//得到待插入数字
char waitedJug = num.charAt(i);
//如果栈不为空 且 栈顶元素大于待插入元素 且 已移除元素小于k个 则弹出栈顶元素
while (!stack.isEmpty() &&
算法学习一:移除k位元素,使剩下元素最小。
最新推荐文章于 2022-12-19 01:07:31 发布
本文探讨了一种算法问题,即如何移除数组中的k位元素,以使得剩余元素组成的数尽可能小。通过对问题的分析和解决过程的阐述,读者可以深入理解算法思维和优化技巧。
摘要由CSDN通过智能技术生成