数据结构
Frank.Ren
这个作者很懒,什么都没留下…
展开
-
leetcode 数据结构
leetcode原创 2022-07-20 14:42:13 · 178 阅读 · 0 评论 -
test about BinaryTree
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public boolean getPath(TreeNode root, TreeNode node, Stack&.原创 2022-07-02 15:10:49 · 186 阅读 · 0 评论 -
平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。第一种算法:自顶向下的递归:自上而下遍历,对每个结点都计算高度差;首先计算左右子树的高度,如果左右子树的高度差是否不超过11,再分别递归地遍历左右子节点,并判断左子树和右子树是否平衡/** * Definition for a binary tree node. * public class TreeNode {...原创 2022-05-25 13:58:48 · 137 阅读 · 0 评论 -
二叉树的层序遍历 leetcode java
给你二叉树的根节点root,返回其节点值的层序遍历。 (即逐层地,从左到右访问所有节点)。 * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, ...原创 2022-05-24 15:46:20 · 83 阅读 · 0 评论 -
一行代码求 二叉树的最大深度 leetcode java
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNod原创 2022-05-24 11:01:47 · 98 阅读 · 0 评论 -
相同的树 leetcode java
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { t原创 2022-05-23 12:43:35 · 91 阅读 · 0 评论 -
用队列实现栈 leetcode java实现 (2)
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是push to back、peek/pop from front、si..原创 2022-05-12 17:31:48 · 96 阅读 · 1 评论 -
设计循环队列 leetcode java
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返回 -原创 2022-05-12 16:43:48 · 106 阅读 · 1 评论 -
最小栈 leetcode java
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。class MinStack { Deque<Integer> xStack; Deque<Integer&g原创 2022-05-12 15:57:03 · 128 阅读 · 1 评论 -
用栈实现队列 leetcode java
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有push to top,peek/pop from top,siz...原创 2022-05-12 14:23:22 · 121 阅读 · 1 评论 -
用队列实现栈 leetcode java
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。class MyStack { List<Integer> list = new Linked...原创 2022-05-12 14:22:06 · 156 阅读 · 1 评论 -
queue 操作 java实现 用队列实现栈
用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。class MyStack { List<Integer> list ..原创 2022-05-12 14:00:43 · 219 阅读 · 1 评论 -
java stack训练(1)
有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。class Solution { public boolean isValid(String s) { if(s.isEmpty()) return true; Stack<Character> stack=new Sta原创 2022-05-11 15:42:38 · 422 阅读 · 1 评论 -
链表操作 leetcode java(4)
两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val..原创 2022-05-11 13:45:43 · 193 阅读 · 1 评论 -
leetcode java 链表
删除链表的倒数第 N 个结点给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val,...原创 2022-05-10 11:33:36 · 235 阅读 · 1 评论 -
leetcode 链表操作 java (3)
环形链表 II给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。第一种方法:借助hashset可以很快解决/**..原创 2022-05-09 16:52:11 · 62 阅读 · 1 评论 -
leetcode 链表操作 java (2)
相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = ..原创 2022-05-09 13:41:31 · 71 阅读 · 1 评论 -
leetcode 链表操作 java
移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; }原创 2022-05-08 17:12:43 · 291 阅读 · 1 评论 -
java 单链表实现 (更新)
public class MySingleList { static class ListNode { private int value; private ListNode next; public ListNode() { } public ListNode(int value) { this.value = value; } public int g.原创 2022-05-08 14:48:29 · 73 阅读 · 1 评论 -
java实现 单链表 不带头节点 单向
代码已上传至github:javaCourse/2022_4_28 at frankRenlf-mySingleList · frankRenlf/javaCourse · GitHubhttps://github.com/frankRenlf/javaCourse/tree/frankRenlf-mySingleList/2022_4_28package mySingleList;public class MySingleList { static class ListNode .原创 2022-04-28 15:22:25 · 932 阅读 · 1 评论