东寻

导航

2020年2月25日 #

平衡二叉树

摘要: 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路 深度搜索,剪枝。 时间复杂度O(lgn),空间复杂度O(lgn)。 未剪枝代码 java public class Solution { private int depth(TreeNode root) { return root == 阅读全文

posted @ 2020-02-25 16:00 东寻 阅读(173) 评论(0) 推荐(0) 编辑

二叉树的深度

摘要: 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路 时间复杂度O(lgn),空间复杂度O(lgn)。 递归代码 非递归代码 阅读全文

posted @ 2020-02-25 15:23 东寻 阅读(169) 评论(0) 推荐(0) 编辑

数字在排序数组中出现的次数

摘要: 题目描述 统计一个数字在排序数组中出现的次数。 思路 二分查找: 1. 利用二分查找找到一个符合条件的值,然后循环搜索这个值前后重复的次数。(循环搜索使得算法一部分退化到O(m))。 时间复杂度O(m+lgn),空间复杂度O(1)。 2. 使用两个修改判定的二分查找,分别找到数字第一次出现和最后一次 阅读全文

posted @ 2020-02-25 15:04 东寻 阅读(258) 评论(0) 推荐(0) 编辑

两个链表的第一个公共结点

摘要: 题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路 快慢指针,链表长度不同时抵消掉多余的长度。 若链表长度不同,则一定时在长链表的链尾相遇。 时间复杂度O(n),空间复杂度O(1)。 代码 笔记 链表长度 阅读全文

posted @ 2020-02-25 13:09 东寻 阅读(234) 评论(0) 推荐(0) 编辑