上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 31 下一页
摘要: 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 思路 平衡二叉树:每个节点左右子树高度相差不超过1。 思路1:最直接的做法,遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树 阅读全文
posted @ 2020-08-24 21:20 不学无墅_NKer 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路 思路1:采用递归实现。树的深度=max(左子树深度,右子树深度)+1。 思路2:层序遍历。 解法1 /** public class TreeNode { int 阅读全文
posted @ 2020-08-23 15:23 不学无墅_NKer 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目描述 统计一个数字在升序数组中出现的次数。 思路 考察的是二分查找,最优解时间复杂度为O(logn)。 二分的前提:有序(一提到有序,必须立马想到二分!) 思路1:先用二分查找找到指定的数字,如果存在,再在两侧顺序扫描第一个和最后一个。因为要查找的数字可能出现n次,所以时间复杂度为O(n)。因此 阅读全文
posted @ 2020-08-22 22:04 不学无墅_NKer 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路 如果两个链表有公共结点,那么两个链表用公共的尾部,如果从两个链表的尾部开始往前比较,那么最后一个相同的节点就是我们要找的节点。 思路1:利用两个辅助栈。 阅读全文
posted @ 2020-08-21 16:53 不学无墅_NKer 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 思路 如果数组中的元素是有序的(单调递增的),则不会有逆序对了。其他情况比如无序或者单 阅读全文
posted @ 2020-08-21 10:29 不学无墅_NKer 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数) 思路 创建哈希表,键值key为字符,值value为出现次数。第一遍扫描:对每个扫描到的字符的次数加一;第二遍扫描:对每个扫 阅读全文
posted @ 2020-08-19 21:28 不学无墅_NKer 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路 思路1:逐个判断每个整数是不是丑数。 所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n%m 阅读全文
posted @ 2020-08-19 19:53 不学无墅_NKer 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 思路1:求数组中所有数字的全排列,类似于“字符串的排列”,然后把每个排列拼起来,求最小值。 (时间复杂度很 阅读全文
posted @ 2020-08-19 11:52 不学无墅_NKer 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 阅读全文
posted @ 2020-08-18 20:47 不学无墅_NKer 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整/数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如,输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18。 思路 涉及的知识 阅读全文
posted @ 2020-08-18 16:26 不学无墅_NKer 阅读(103) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 31 下一页