当前位置:网站首页>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);
}
边栏推荐
- PostgreSQL — Installation and Common Commands
- Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集
- 日期选择器组件(限制年份 设定仅展示的月份)
- 《mysql 从入门到内卷再到入土》——Mysql基础 学习笔记目录
- 用示波器揭示以太网传输机制
- ACM模板笔记:八数码问题——使用BFS+康托展开打表解决
- RADIUS Authentication Server Deployment Costs That Administrators Must Know
- B. Trouble Sort
- 力扣215题,数组中的第K个最大元素
- 石油化工行业商业供应链管理系统:标准化供应商管理,优化企业供应链采购流程
猜你喜欢
随机推荐
【网络通信四】ping工具源码cmake工程编译以及运行说明
apr_thread使用内存之谜
wget编译升级故障解决
Likou 221 questions, the largest square
机器学习笔记:t-SNE
社区分享|货拉拉通过JumpServer纳管大规模云上资产
2022.8.9 模拟赛
扩展中国剩余定理
Redis 性能影响 - 异步机制和响应延迟
Web Reverse Lilac Garden
如何保护 LDAP 目录服务中的用户安全?
PPT的两个实用技巧
F. Binary String Reconstruction
Detailed explanation of the use of Oracle's windowing function (2)
实施MES管理系统前,这三个问题要考虑好
npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
PROCEDURE :存储过程结构——《mysql 从入门到内卷再到入土》
GAN CFOP
组合导航精度分析
C. Social Distance



![[mysql] 深入分析MySQL版本控制MVCC规则](/img/16/e28641c355d941fda50a6e8b7911ee.png)




