剑指57-二叉树的下一个结点 Posted on 2019-09-13 | In 剑指offer | 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 画出一个二叉树的图来帮助分析,分两种情况: pNode有右子树,下一个节点肯定在右子树上。具体来说,在其右子树上一直迭代找到最后一个左孩子。 pNod ... Read more »
剑指56-删除链表中重复的结点 Posted on 2019-09-13 | In 剑指offer | 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 表头比较难处理,为了方便,新建了一个节点作为表头。 12345 ... Read more »
剑指55-链表中环的入口结点 Posted on 2019-09-13 | In 剑指offer | 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 从链头到链尾遍历链表并对访问一个节点做记录,每访问一个节点,还要检查其否是被访问过。第一个重复访问的节点,必然是环的入口节点。 需要O(n)的空间复杂度。 123456789101112class Solut ... Read more »
剑指54-字符流中第一个不重复的字符 Posted on 2019-09-13 | In 剑指offer | 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。 注: ... Read more »
剑指53-表示数值的字符串 Posted on 2019-09-13 | In 剑指offer | 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 模式匹配 Python语言关于字符串是 ... Read more »
剑指52-正则表达式匹配 Posted on 2019-09-13 | In 剑指offer | 题目描述 请实现一个函数用来匹配包括.和*的正则表达式。模式中的字符.表示任意一个字符,而*表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串aaa与模式a.a和ab*ac*a匹配,但是与aa.a和ab*a均不匹配 关于模式匹配: 一条包括 ... Read more »
剑指51-构建乘积数组 Posted on 2019-09-13 | In 剑指offer | 题目描述 给定一个数组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]的计算公式一次计算B中每个元素。该方法牵涉到大量的重复的乘运算,效率 ... Read more »
剑指50-数组中重复的数字 Posted on 2019-09-13 | In 剑指offer | 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 本题的后台评估算法有问题,实际 ... Read more »