刷题
bbhdeal
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
232用栈实现队列
看了题解,感觉题解还是有点麻烦入队没有什么要求,直接入栈就可以出队需要满足队的先入先出原则,因此需要一个额外的栈,把之前在栈里的元素再反方向倒腾过来,额外的栈直接出栈就是出队peek检索,这个和题解的方式不同。如果额外的栈非空(s2),直接对s2进行peek检索。如果s2为空,直接返回s1空时入栈的元素class MyQueue { private Stack<Integer> s1,s2; int front; public MyQueue() {原创 2022-04-28 21:13:16 · 147 阅读 · 0 评论 -
20有效的括号
用栈来解决问题,需要回答三个问题1.用什么结构存栈——java中的Deque2.什么时候入栈——当出现左括号时3.什么时候出栈——当出现右括号时,把栈顶元素拿出来判断配不配对class Solution { public boolean isValid(String s) { int n=s.length(); if(n%2==1) { return false;//如果是奇数个,肯定不配对 }原创 2022-04-28 15:21:50 · 572 阅读 · 0 评论 -
206反转链表
因为没有及时斩断尾巴,导致链表两个元素之间存在一个环class Solution { public ListNode reverseList(ListNode head) { ListNode T=new ListNode(0); ListNode tmp=new ListNode(); tmp=head; if(head==null) return head; head=head.next;//及时往下原创 2022-04-27 10:13:41 · 282 阅读 · 0 评论 -
203移除链表元素
在这个题上栽了好多次第一次,想法是添加一个头节点,利用T.next.val==val来判断class Solution { public ListNode removeElements(ListNode head, int val) { ListNode T = new ListNode(0); ListNode Reserve=T; T.next=head; if(head==null) return head; .原创 2022-04-26 20:11:45 · 666 阅读 · 0 评论 -
Leetcode88合并两个有序数组
双指针,在草纸上画一画就能明白思路,需要一个额外的数组用来储存注意! while 里面一定要写成 if...else if...的形式,不然会超过数组边界报错class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i=0,j=0,k=0; int[] tmp=new int[m+n]; while(i<m && j&原创 2022-04-19 10:51:57 · 358 阅读 · 0 评论
分享