SwordPointToOffer(59): 对称的二叉树 发表于 2017-02-10 | 分类于 SwordPointToOffer 题目请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 分析通常我们有三种不同的二叉树遍历算法,即前序遍历、中序遍历和后序遍历。在这三种遍历算法中,都是先遍历左子结点再遍历右子结点。我们是否可以定义一种遍历算法,先遍历右子结点再遍历左子结点 ... 阅读全文 »
SwordPointToOffer(58): 二叉树的下一个节点 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目给定一个二叉树和其中的一个节点,请找出中序遍历顺序的下一个节点并且返回。注意,树中的节点不仅包含左右子节点,同时包含指向父节点的指针。 分析如果一个节点有右子树,那么它的下一个节点就是它的右子树中的左子节点。也就是说右子节点出发一直沿着指向左子节点的指针,我们就能找到它的下一个节点。 接着我们分 ... 阅读全文 »
SwordPointToOffer(57): 删除链表中重复的节点 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 分析从头遍历整个链表,如果当前结点的值与下一个结点的值相同,那么它们就是重 ... 阅读全文 »
SwordPointToOffer(56): 链表中环的入口节点 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目一个链表中包含环,请找出该链表的环的入口结点。123456789101112/** * 节点定义 */public class ListNode { int val; ListNode next = null; ListNode(int val) { ... 阅读全文 »
SwordPointToOffer(54): 表示数值的字符串 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 分析表示数值的字符串遵循如下模式:[sign] ... 阅读全文 »
SwordPointToOffer(53): 正则表达式匹配 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但是与”aa.a”和”ab*a”均不匹配 分析每 ... 阅读全文 »
SwordPointToOffer(52): 构建乘积数组 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1],不能使用除法。 分析定义 B[i] = C[i] D[i],C[i] = A[0]A[1]…A[i-1],D[i ... 阅读全文 »
SwordPointToOffer(51): 数组中重复的数字 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 分析方法一排序,时间复杂度$ ... 阅读全文 »
SwordPointToOffer(49): 把字符串转换成整数 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 分析这个题目需要考虑边界条件,非法输入等,当出现非法输入时返回 0,同时还应该设置全局变量isValid这样可以和输入正确的字符串 “0”区分开。 实现123456789101112 ... 阅读全文 »
SwordPointToOffer(47): 不用加减乘除做加法 发表于 2017-02-09 | 分类于 SwordPointToOffer 题目写一个函数,求两个整数之和,要求在函数体内不得使用 加减乘除 四则运算符号。 分析不能用四则运算,还有位运算。 比如: 5 + 17 = 225 的二进制是101,17 的二进制是10001。把计算分成三步: 二进制各位相加但不进位,得到结果是10100(最后一位两个都是1,相加结果不计进位) ... 阅读全文 »