当前位置:网站首页>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);
}
边栏推荐
- 突破次元壁垒,让身边的玩偶手办在屏幕上动起来!
- 组合导航精度分析
- Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集
- 查询:复杂查询的语法和使用例——《mysql 从入门到内卷再到入土》
- RADIUS Authentication Server Deployment Costs That Administrators Must Know
- ctfshow-osint
- Future与CompletableFuture
- 【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1)
- B. Codeforces Subsequences
- 石油化工行业商业供应链管理系统:标准化供应商管理,优化企业供应链采购流程
猜你喜欢
化学制品制造业数智化供应链管理系统:建立端到端供应链采购一体化平台
找的笔试题的复盘(一)
mysql性能监控与执行计划
饿了么-机构树单选
【PCBA scheme design】Bluetooth skipping scheme
Date picker component (restrict year to set only displayed months)
Future-oriented IT infrastructure management architecture - Unified IaaS
快消品行业经销商协同系统:实现经销商可视化管理,提高沟通执行效率
C. Even Picture
【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1)
随机推荐
PostgreSQL — Installation and Common Commands
ctfshow-osint
Likou 221 questions, the largest square
组合导航精度分析
[Golang]从0到1写一个web服务(上)
Go程序员进化史
图扑智慧电力可视化大屏,赋能虚拟电厂精准减碳
ansible各个模块的详解和使用
ArcMap时间滑块功能动态显示图层数据并生成视频或动图
LeetCode-36-二叉搜索树与双向链表
ENVI最小距离、最大似然、支持向量机遥感影像分类
ArcMap创建镶嵌数据集、导入栅格图像并修改像元数值显示范围
直播课堂系统08补-腾讯云对象存储和课程分类管理
ENVI自动生成地面控制点实现栅格影像的自动地理配准
kuberentes Auditing 入门
基于Pix4Dmapper的运动结构恢复法无人机影像三维模型重建
TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》
Redis命令手册
优化是一种习惯●出发点是'站在靠近临界'的地方
化学制品制造业数智化供应链管理系统:建立端到端供应链采购一体化平台