面试26题: 题目:树的子结构 题:输入两棵二叉树A和B,判断B是不是A的子结构。 解题思路:递归,注意空指针的情况。 解题代码: 另外,如果树节点的val值是double的时候,需要自定义一个equal函数,当num1和num2相差小于1e-07时即可认为是相等的,详见剑指offer P151 ...
分类:
其他好文 时间:
2018-06-19 13:52:17
阅读次数:
163
面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路:递归,并需注意对空链表单独处理。 解题代码: ...
分类:
其他好文 时间:
2018-06-19 13:45:58
阅读次数:
159
面试19题: 题目:正则表达式匹配 题:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是 ...
分类:
其他好文 时间:
2018-06-18 22:42:01
阅读次数:
208
面试21题: 题目:调整数组的顺序使奇数位于偶数前面 题一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 解题思路:使用两个指针,第一个指针初始化指向数组的第一个数字,从前向后移动,遇到偶数就停下来;第二个指针指向数组的最后一个 ...
分类:
其他好文 时间:
2018-06-18 20:58:05
阅读次数:
164
面试18题: 题目:删除链表中的节点 题一:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 解题思路:我们要删除节点i,先把i的下一个节点j的内容复制到i,然后把i的指针指向节点j的下一个节点。此时再删除节点j,其效果等同于把节点i删除了。 ...
分类:
其他好文 时间:
2018-06-18 19:55:48
阅读次数:
150
面试17题: 题目:打印从1到最大的n位数 题:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1、2、3一直到最大的3位数999. 解题思路:需要考虑大数问题,这是题目设置的陷阱。可以把问题转换成数字排列问题,用递归让代码更简洁。 参见剑指offer P114 解题代码: ...
分类:
其他好文 时间:
2018-06-18 17:09:34
阅读次数:
171
面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。 解题思路:主题考虑底数为0.0,指数为负数的情况,此时可以利用全局变量指出g_InvalidIn ...
分类:
其他好文 时间:
2018-06-18 12:39:07
阅读次数:
142
面试14题: 题目:剪绳子 题:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],...,k[m]。请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三 ...
分类:
其他好文 时间:
2018-06-18 10:59:36
阅读次数:
126
面试12题: 题目:矩阵中的路径 题:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f ...
分类:
其他好文 时间:
2018-06-17 20:49:28
阅读次数:
139
面试11题: 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 ...
分类:
其他好文 时间:
2018-06-15 13:16:56
阅读次数:
122