摘要:
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路 两个相同的数异或得到 0,任何数和 0 异或得到原来的数。可以将所有的数异或(其实就是两个出现一次的数异或),得到一个数 a,然后判断 a 中第一位不为 0 的位,也即第一位不相同的位。 阅读全文
摘要:
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路 递归判断子树是否是平衡二叉树,每次还需要返回子树的高度用以判断当前树是否是平衡的。 实现 阅读全文
摘要:
题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路 递归求左右子树的高度,将其中较高的子树高度加1就是当前树的高度。 实现 阅读全文
摘要:
题目描述 统计一个数字在排序数组中出现的次数。 解题思路 1. 解法1 遍历数组,比较给定值和数组中元素的值。 2. 二分查找 我们需要找到第一个和最后一个k,如果中间值大于给定值k,那么k在前半段,小于k则在后半段。相等,则判断前面的值是否等于k,如果相等,说明第一个k在前面,否则第一个k就是当前 阅读全文
摘要:
题目描述 输入两个链表,找出它们的第一个公共结点。 解题思路 首先求出两个链表的长度,长的链表先走到和短的链表具有相同长度的位置,然后同时遍历比较两个链表,直到找到相同的结点。 实现 Java / 链表结点定义 / public class ListNode { int val; ListNode 阅读全文