摘要:
一.SpringMVC中的几个关键组件介绍 SpringMVC有9大组件,在容器启动时核心代码AbstractApplicationContext.refresh()中执行抽象方法onRefresh()进行初始化 下面对两大关键组件进行介绍和说明 1.HandlerMapping,处理器映射器组件 阅读全文
摘要:
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) 阅读全文
摘要:
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 解 方法一:双指针说明 本题是一道经典的面试题, 阅读全文
摘要:
解答1:递归 class Solution { public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } TreeNode left = invertTree(root.left); TreeNode 阅读全文
摘要:
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1, 阅读全文
摘要:
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。 解答 最简单,也是最笨的方法。先遍历二叉树把结果保存到集合。 再遍历二叉树把每个值和集合中的值进行比较 class Solution 阅读全文
摘要:
反转一个单链表。 解答 class Solution { public ListNode reverseList(ListNode head) { if(head == null || head.next == null) { return head; } List<ListNode> list = 阅读全文
摘要:
给定一个二叉树,原地将它展开为一个单链表。 解答 将二叉树展开为单链表之后,单链表中的节点顺序即为二叉树的前序遍历访问各节点的顺序 递归实现 class Solution { private TreeNode curNode; public void flatten(TreeNode root) { 阅读全文
摘要:
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 解答 最简单也是最直接的,利用BFS递归实 阅读全文
摘要:
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 简答 1.dfs递归实现 class 阅读全文