![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法题
leetcode题目为主
大威少MVP
这个作者很懒,什么都没留下…
展开
-
leetcode 110 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树 解法一 自顶向下 递归(大量重复计算,存在大量冗余) class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; int leftH = Height(root.left); int rightH = Height(root.right); if(M原创 2020-06-06 00:11:08 · 104 阅读 · 0 评论 -
leetcode 19 删除链表的倒数第N个节点
法一 单指针(两次遍历) class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null) return null; int L = 0; ListNode dummyHead = new ListNode(-1); dummyHead.next = head; ListNode p原创 2020-06-03 10:18:32 · 74 阅读 · 0 评论 -
leetcode 83 删除排序链表中的重复元素
法一 直接法 class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode cur = head; while(cur != null && cur.next != null){ if(cur.val == cur.next.val){ cur.next = cur.next.原创 2020-06-03 00:48:18 · 82 阅读 · 0 评论 -
leetcode 21 合并两个有序链表
法一 class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //迭代 ListNode dummyHead = new ListNode(-1); ListNode prev = dummyHead; while(l1 != null && l2 != null){ if(l1.val <= l2原创 2020-06-03 00:05:36 · 55 阅读 · 0 评论 -
leetcode 203 移除链表元素
题目要求:删除链表中等于给定值 val 的所有节点。 法一:无头结点 class Solution { public ListNode removeElements(ListNode head, int val) { while(head != null && head.val == val){ //1.考虑头节点就是待删除的节点 2.考虑头节点为null ListNode delNode = head; head =原创 2020-06-02 09:57:27 · 72 阅读 · 0 评论 -
面试题31
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack = new Stack<>(); int i = 0; for(int num : pushed) {原创 2020-05-16 00:21:05 · 65 阅读 · 0 评论 -
Leetcode 232. 用栈实现队列 JAVA实现
本人整理出的两种方法,都是用两个栈实现队列。 用栈实现队列法一法二 法一 入队要用到栈一s1,s2; 出队只需用到栈一s1。 //该方法主要处理的是入栈操作。入队前,将s2作为中间容器,将s1的数据全部倒入s2,在将元素入队,最后将元素倒回s1 //因为此时s1保持了先进先出的特性,所以出队是直接从s1的栈顶出栈 import java.util.Stack; class MyQueue { p...原创 2020-03-27 16:14:31 · 150 阅读 · 0 评论