本文主要是介绍贪心-leetcode402.移掉 K 位数字-XMUOJ符文序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
思路
话不多说,直接上代码
代码
/*leetcode402.移掉 K 位数字-XMUOJ符文序列--JinlongW-2024/05/26单调栈+贪心*/
#include<bits/stdc++.h>
const int N=1010;
char num[N],result[N],numStack[N];
int k;
using namespace std;void removeKdigits( int k) {int len = strlen(num);int top = 0; // numStack 栈顶指针for (int i = 0; i < len; ++i) {char digit = num[i];while (k > 0 && top > 0 && numStack[top - 1] > digit) {--top;--k;}numStack[top++] = digit;}// 如果 K > 0,删除末尾的 K 个字符while (k > 0 && top > 0) {--top;--k;}// 去除前导零int idx = 0;bool leadingZero = true;for (int i = 0; i < top; ++i) {if (leadingZero && numStack[i] == '0') {continue;}leadingZero = false;result[idx++] = numStack[i];}// 如果结果为空,返回 "0"if (idx == 0) {result[idx++] = '0';}result[idx] = '\0'; // null-terminate the result string
}int main() {cin >> k;cin >> num;removeKdigits(k);cout << result << endl;return 0;
}
这篇关于贪心-leetcode402.移掉 K 位数字-XMUOJ符文序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!