![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode、牛客
刷题
猴子奔跑
这个作者很懒,什么都没留下…
展开
-
NC3 链表中环的入口结点
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead==null||pHead.next==null){ .原创 2021-08-07 22:56:04 · 509 阅读 · 0 评论 -
LeetCode 102. 二叉树的层序遍历
思路:首先新建一个前序遍历函数,然后,其中参数包括结点、List和深度,如果深度大于list中list的数量,则新加入一个list再取list中的第deep-1个列表 加入root.val的值class Solution { List<List<Integer>> list=new ArrayList<>(); public List<List<Integer>> levelOrder(TreeNode root) { .原创 2021-08-04 20:23:54 · 392 阅读 · 0 评论 -
LeetCode42. 接雨水
解题思路从数组下标0开始进行遍历,计算每一个单元能够容纳的水量是多少,然后进行求和。(不知道能不能实现或者实现很困难)每个单元能够存储的水量取决于左右两侧"墙"的最大值中的最小值。尝试先遍历出每个单元左侧"墙"和右侧"墙"的最大值,然后进行循环遍历,利用公式: water=min(max(leftMax,rightMax)-x)使用双指针,计算左指针左侧最大值leftMax和右指针右侧最大值rightMax,然后利用上面公式计算。class Solution { .原创 2021-07-30 23:10:30 · 588 阅读 · 0 评论 -
NC4 判断链表中是否有环
使用快慢指针,如果存在闭环的话,快慢指针一定会相遇。public class Solution { public boolean hasCycle(ListNode head) { if(head==null) return false; ListNode slow=head; ListNode fast=head; while(fast!=null&&fast.next!=null){ sl.原创 2021-07-30 22:55:06 · 581 阅读 · 0 评论 -
LeetCode538. 把二叉搜索树转换为累加树
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) {..原创 2021-06-02 22:13:09 · 1333 阅读 · 0 评论 -
LeetCode230.二叉搜索树中第K小的元素
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { .原创 2021-06-02 22:11:25 · 1261 阅读 · 0 评论 -
LeetCode654.最大二叉树
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) {..原创 2021-06-02 16:14:58 · 1268 阅读 · 0 评论 -
LeetCode116. 填充每个节点的下一个右侧节点指针
/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node next; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, Node _left, Node _.原创 2021-05-31 21:10:26 · 1353 阅读 · 0 评论 -
LeetCode226. 翻转二叉树
翻转一棵二叉树。示例:输入: 4/ 2 7/ \ / 1 3 6 9输出: 4/ 7 2/ \ / 9 6 3 1写树相关的算法,简单说就是,先搞清楚当前 root 节点该做什么,然后根据函数定义递归调用子节点,递归调用会让孩子节点做相同的事情。我们发现只要把二叉树上的每一个节点的左右子节点进行交换,最后的结果就是完全翻转之后的二叉树/** * Definition for a binary tree node. *原创 2021-05-31 20:35:12 · 1362 阅读 · 0 评论 -
LeetCode 92. 反转链表 II
class Solution { public ListNode reverseBetween(ListNode head, int left, int right) { // 设置 dummyNode 是这一类问题的一般做法 ListNode dummyNode = new ListNode(-1); dummyNode.next = head; ListNode pre = dummyNode; for (int i原创 2021-05-27 10:17:45 · 1325 阅读 · 0 评论