摘要: 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:这道题的简单版本是除了一个数字之外,其他数字都出现了两次,这个很简单,将所有的数异或一遍就得到了那个数字。如果不考虑空间复杂度的话,通过hash表统计的方法可以得到这两个数字;但如果空间复杂度要求... 阅读全文
posted @ 2015-07-26 21:58 AndyJee 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一课二叉树的根结点,判断该树是不是平衡二叉树。如果二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。思路:1、重复遍历结点参考上一题求二叉树的深度,先求出根结点的左右子树的深度,然后判断它们的深度相差不超过1,如果否,则不是一棵二叉树;如果是,再用同样的方法分别判断左... 阅读全文
posted @ 2015-07-26 21:26 AndyJee 阅读(2160) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。结点的定义如下:struct TreeNode{ int val; TreeNode* left; TreeNode* right;};思路:对于树的问题基... 阅读全文
posted @ 2015-07-26 20:26 AndyJee 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 题目:统计一个数字在排序数组中出现的次数。思路:1、顺序遍历顺序扫描一遍数组,统计该数字出现的次数。时间复杂度:O(n)2、二分查找假设我们需要找的数字是k,那么就需要找到数组中的第一个k和最后一个k出现的位置。如何通过二分查找得到第一个k的位置呢?取数组中间的数字与k作比较,如果该数字比k大,那么... 阅读全文
posted @ 2015-07-26 18:16 AndyJee 阅读(2235) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个链表,找出它们的第一个公共结点。链表结点的定义如下:struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){};};思路:1、暴力法遍历第一个链表,每遍历到一个结点,在第二... 阅读全文
posted @ 2015-07-26 15:37 AndyJee 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。思路:1、顺序扫描顺序扫描整个数组,每扫描到一个数字,就将该数字跟后面的数字比较,如果大于的话,则这两个数字构成了逆序对。(比较简单,这里就不贴出代码)时间复杂度:O(n... 阅读全文
posted @ 2015-07-26 11:41 AndyJee 阅读(919) 评论(0) 推荐(0) 编辑