![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NK
calangan
想要的越多越得不到想要的
展开
-
【NK四】 在二叉树中找到两个节点的最近公共祖先
在二叉树中找到两个节点的最近公共祖先 根据公共祖先的定义,若root是o1、o2的最近公共祖先,则只可能为以下三种情况之一 p 和 q 分别在 root 的左右子树中 p = root 且 q 在 root 的 左或右子树中 q = root 且 p 在 root 的 左或右子树中 import java.util.*; public class Solution { public int lowestCommonAncestor (TreeNode root, int o1, int o2)原创 2021-10-09 17:24:38 · 100 阅读 · 0 评论 -
【NK三】 跳台阶
跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 输入: 2 返回值: 2 说明: 青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2 以下整理为参考NK大神解析。 1、递归的写法 当n等于1的时候,只需要跳一次即可,只有一种跳法,记f(1)=1 当n等于2的时候,可以先跳一级再跳一级,或者直接跳二级,共有2种跳法,记f(2)=2 当n等于3的时候,他可以从一级台阶上跳两步上来,也可以原创 2021-10-09 15:20:37 · 74 阅读 · 0 评论 -
【NK二】 用两个栈实现队列
用两个栈实现队列 用两个栈来实现一个队列,完成 n 次在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。 栈是先进后出的,队列是先进先出的 1.使用两个栈stackPop和stackPush。 2.添加元素的时候直接把要添加的值压入到stackPush栈中。 3.删除元素的时候如果stackPop中有元素我们就直接删除,如果没有元素,需要把stackPush中的元素全部出栈放到stackPop中,然后再删除stac原创 2021-10-08 16:00:38 · 98 阅读 · 0 评论 -
【NK一】 判断链表中是否有环
判断链表中是否有环 方法一 使用一个集合,遍历链表,检查每一个链表的节点是否已经遍历过,即存在环,如果不存在环则可以遍历到最后一个节点得next(null)。 这种方法的时间复杂度为O(n)。 方法二 在处理链表问题中快慢指针可以解决很多问题。也可以用于解决本题。 如果有环,则快慢指针必会相遇。 这种方法的时间复杂度为O(1)。 public boolean hasCycle(ListNode head) { ListNode fast = head; ListNode sl原创 2021-10-08 14:30:45 · 114 阅读 · 1 评论