当前位置:网站首页>LeetCode-402 - Remove K digits
LeetCode-402 - Remove K digits
2022-08-10 21:27:00 【z754916067】
题目
思路
- It feels useless to sort the numbers,Backtracking should be used for circular comparisons.
- wrote a backtrace,超出时间限制了…Backtracking is indeed time-complex,记录一下,润去题解
//targetHow many numbers to remove for the target nowHow many digits to delete for the current charfor the last deleted character For backtracking
public void Back(StringBuilder nownum,int target,int now){
if(target==now){
//比较两个字符串的大小 不能直接转 length will exceed
//赋给ans
ans = Compare(nownum.toString(),ans);
return;
}//Otherwise start subtracting
for(int i=0;i<nownum.length();i++) {
StringBuilder sb = new StringBuilder(nownum);
Back(sb.deleteCharAt(i), target, now + 1);
}
}
- Traverse the string from left to right,for each element traversed,See if you need to selectively discard the previous adjacent elements,因为对于aabbce来说,就可以判断aabbc好,还是aabbe好
- 需要注意的是,If you encounter a monotonically increasing number,Then you will always choose not to discard,But the meaning of the question must be discardedk个,为了解决这个问题,You need to let it go every time you throw it awayk减去1,That is, a discard is completed,减到0traversal can be terminated,Because enough has been lostk次了.
- 但也有可能,遍历结束后k还没有减到0,It can be reserved at this timen-kthe meaning of the numbers,So after traversal select beforen-k个即可.
代码
public String removeKdigits(String num, int k) {
int remain = num.length()-k;
//创建stack用来接收
Stack<Character> cs = new Stack<>();
for(int i=0;i<num.length();i++){
//弹出栈顶 It compares which is put on the stack
while(k!=0 && !cs.isEmpty() && cs.peek()>num.charAt(i)){
cs.pop();
k-=1;
}
cs.push(num.charAt(i));
}
//取前n-k个
StringBuilder ans = new StringBuilder();
while(!cs.isEmpty()) ans.append(cs.pop());
String ans1 = ans.reverse().substring(0,remain);
//删除前导0
int nums=0;
for(int i=0;i<ans1.length();i++){
if(ans1.charAt(i)=='0') nums++;
else break;
}
if(nums==ans1.length()) return "0";
else return ans1.substring(nums);
}
边栏推荐
猜你喜欢
【PCBA solution】Electronic grip strength tester solution she'ji
npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
【PCBA方案设计】蓝牙跳绳方案
饿了么-机构树单选
面向未来的 IT 基础设施管理架构——融合云(Unified IaaS)
找的笔试题的复盘(一)
PROCEDURE :存储过程结构——《mysql 从入门到内卷再到入土》
日期选择器组件(限制年份 设定仅展示的月份)
apr_thread使用内存之谜
管理员必须知道的RADIUS认证服务器的部署成本
随机推荐
ENVI最小距离、最大似然、支持向量机遥感影像分类
PPT的两个实用技巧
查询:复杂查询的语法和使用例——《mysql 从入门到内卷再到入土》
npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
mysql性能监控与执行计划
DDL:视图——《mysql 从入门到内卷再到入土》
LeetCode-402-移掉K位数字
根心与根轴
Detailed explanation and use of each module of ansible
【Windows】你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问,这些策略可帮助保护你的电脑
Date picker component (restrict year to set only displayed months)
ENVI感兴趣区ROI文件由XML格式转为ROI格式
Introduction to PostgreSQL
[mysql] 深入分析MySQL版本控制MVCC规则
HGAME 2022 Week2 writeup by pankas
sklearn 笔记 TSNE
数字化转型:如何引导创新领导者
【PCBA方案设计】蓝牙跳绳方案
Redis Command Manual
美创科技勒索病毒“零信任”防护和数据安全治理体系的探索实践