LeetCode19删除链表的倒数第N个节点&20有效的括号
示例:
给定一个链表:1->2->3->4->5,和n=2.当删除了倒数第二个节点后 , 链表变为1->2->3->5.
说明:
给定的n保证是有效的 。
进阶:
你能尝试使用一趟扫描实现吗?
分析:可以扫描两次 , 第一次获取总长度 , 知道倒数第N是正数第几个 , 第二次扫描真正的找到节点删除 。
如何扫描一次呢?用两个指针 , 一个先走N步 , 然后两个同时向下寻找 。 一直到右侧的到最尽头即可找到待删除节点 。
publicListNoderemoveNthFromEnd(ListNodehead,intn){ListNodevalue=https://pcff.toutiao.jxnews.com.cn/p/20200905/newListNode(0);value.next=head;head=value;ListNodeteam=value;for(inti=0;i
左括号必须用相同类型的右括号闭合 。 左括号必须以正确的顺序闭合 。 注意空字符串可被认为是有效字符串 。
示例1:
输入:"()"输出:true
示例2:
输入:"()[]{}"输出:true
示例3:
输入:"(]"输出:false
示例4:
输入:"([)]"输出:false
示例5:
输入:"{[]}"输出:true
分析:括号类的问题是经典栈类问题 , 肯定要想到用栈处理 。 判断一个字符串满不满足一个有效的字符串 , 就要看它是不是都能组成对 。
从单个对来说 , ((,))都是不满足的 , 只有()才可满足 , 即一左一右 。 从多个对来说{[(字符串还可接受任意无限( , [,{的括号 。 但是只能接收)的向左的括号 。从上面可以看作一种相消除的思想 。 例如(({[()()]}))字符串遍历时候可以这样处理:
(({[(下一个)消掉成(({[(({[(下一个)消掉成(({[(({[下一个]消掉成(({(({下一个}消掉成((((下一个)消掉成((下一个)消掉成``这样就满足题意所以这个过程利用栈判断当前是加入栈还是消除顶部 , 到最后如果栈为空说明满足 , 否则不满足 , 当然具体括号要对应 , 具体实现代码为:
publicbooleanisValid(Strings){Stackstack=newStack();for(inti=0;i
推荐阅读
- 地动仪|为何浑天仪被韩国人印在钞票上,而地动仪却被我们从教科书中删除
- 青年|王者荣耀:未能上线的几款皮肤,已被天美永久删除,第4最为罕见
- 孟晚舟|孟晚舟庭审日记丨难以自圆其说的盘查和被删除的邮件
- 金士顿公司|清空U盘,手机一键格式化,数据就被彻底删除了吗?
- 刘亦菲自己都想删除的5张照片,你见过几张!
- 扫地机器人|扫地机器人爆低俗用语 客服:附加功能无法删除
- 刘亦菲|刘亦菲最想删除的一张照片 黑色紧身裤太尴尬
- 雷霆战将|《雷霆战将》官博悄悄删除声明,真的认怂了?嘉行两主演仍未回应
- 家长|家长要求救娃者删除视频称侵犯隐私:否则起诉救娃者 令人寒心
- 萧轩儿|异性相处,聊天时你发“在干嘛呢”,收到这三种回复,请直接删除
