10 2018 档案
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。(本文代码采用ArrayLi
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请实现两个函数,分别用来序列化和反序列化二叉树。 思路 一般情况下,需要采用前/后序遍历和中序遍历才能确定一个二叉树,但是其实可以只采用前序遍历(从根结点开始),将空结点(null)输出为一个特
阅读全文
摘要:true true false true 为什么只有第三个的结果为false呢? 首先弄清楚String类型的“==”和“equal”方法的区别。“==”比较的是内存地址,而“equal”比较的是内容。所以采用”equal“方法的第二和第四个判断输出为”true“。 对于String st'r1 =
阅读全文
摘要:public class Test { public static void main(String[] args) { /* * int类型转String类型 */ int n1 = 9; //1.采用String类的valueOf方法 String s1=String.valueOf(n1); //2.采用...
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路 二叉搜索树、排序链表,想到使用中序遍历。 要实现双向链表,必须知道当前结
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个点外,还有一
阅读全文
摘要:更新: 在一次搜索“变量声明在循环体内还是循环体外”问题时,碰见了一个这样的代码,与本文类似,代码如下: 上面的代码最终结果会导致newArray数组中的每个元素都等于最后一个元素,原因就是每次向newArray中存储对象时,没有新建一个对象进行储存,从而导致错误。 上面代码只需要将第3行的 Ent
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 思路 1.假设找到了其中一条路径,达到叶结点后,由于没有指向父
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 思路 二叉树后序遍历数组的最后一个数为根结点,
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 (一)从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 (二)从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。 (三)请实现一个函数按照之字形顺序
阅读全文
摘要:今天在牛客网上做一个编程题时,在提交代码后老是抛出NullPointerException异常,大概的代码如下: 后来改成如下代码就通过了。 具体原因应该是牛客网中的测试代码没有考虑null的情况,希望我们返回的是一个空的ArrayList。 就返回值到底应该是用null还是空集合的问题,查了一些资
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 思路 最初想法是定义一个成员变量min来存放最小元素,但
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 思路 每次打印矩阵最外面的一圈(用方法printMatrixInCircle()表示),每次都是这个操作,所以可以采用递归。每次打
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 思路 还是画图分析,不用分析根结点,只需要分析左右子树。可以看出,左右子树刚好是呈镜像的两颗二叉树
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 思路 画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点。 测试算例 1.功能测试(普通二叉树;左斜树;右斜树;一个结点) 2.
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入两棵二叉树A和B,判断B是不是A的子结构。 思路 1)先对A树进行遍历,找到与B树的根结点值相同的结点R; 2)判断A树中以R为根结点的子树是否包含B树一样的结构。 测试算例 1.功能测试(
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 思路 递归实现:合并过程中,每次都是从两个链表中找出较小的一个来链接,因此可以采用递归来实现:当任意一个链表为nu
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思路 方法一:使用三个指针(pre,p,next)进行实现。令p指向pre,next则是用于防止链表断裂(很简单,详见代
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中,环的入口结点是结点3。 思路 1.确定链表是否有环:通过两个不同速度的指针确定,当两个指针指向同一个结点时,该结点为环中的一个结
阅读全文
摘要:正文 本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路 对于任意一个整数数组,设置一个指针,从前往后走,如果遇到奇数则指针后移
阅读全文
摘要:本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,但“12e”、“1a3.14”、“1
阅读全文

浙公网安备 33010602011771号