随笔分类 - 剑指Offer
摘要:请实现一个函数可以复制一个复杂链表。 在复杂链表中,每个结点除了有一个指针指向下一个结点外,还有一个额外的指针指向链表中的任意结点或者null。 注意: 函数结束后原链表要与输入时保持一致。 数据范围: 链表长度 [0,500]。 代码: /** * Definition for singly-li
阅读全文
摘要:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 保证树中结点值均不小于 0。 数据范围: 树中结点的数量 [0,1000]。 样例: 给出二叉树如下所示,并给出num=22。 输出:[[5,4,12,1],[5,6
阅读全文
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回true,否则返回false。 假设输入的数组的任意两个数字都互不相同。 数据范围: 数组长度 [0,1000]。 样例: 输入: [4, 8, 6, 12, 16, 14, 10] 输出: true 代码: class
阅读全文
摘要:请实现一个函数按照之字形顺序从上向下打印二叉树。 即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, 4, nu
阅读全文
摘要:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 输出:[[8], [12, 2], [6
阅读全文
摘要:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 输出:[8, 12, 2, 6, 4] 代码:
阅读全文
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。 注意:若两个序
阅读全文
摘要:设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。 push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 getMin()–得到栈中最小元素 数据范围: 操作命令总数 [0,100]。 样例: MinStack minStack
阅读全文
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 数据范围: 矩阵中元素数量 [0,400]。 样例: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 代码: class
阅读全文
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一棵二叉树和它的镜像一样,那么它是对称的。 数据范围: 树中节点数量 [0,100]。 样例: 如下图所示二叉树[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]为对称二叉树: 如下图所
阅读全文
摘要:输入一个二叉树,将它变换为它的镜像。 数据范围: 树中节点数量 [0,100]。 样例: 输入树: [8,6,10,5,7,9,11,null,null,null,null,null,null,null,null] 输出树: [8,10,6,11,9,7,5,null,null,null,null,
阅读全文
摘要:输入两棵二叉树 A,B,判断 B 是不是 A 的子结构。 我们规定空树不是任何树的子结构。 数据范围: 每棵树的节点数量 [0,1000]。 样例: 树A: 树B: 返回true,因为B是A的子结构 代码: /** * Definition for a binary tree node. * pub
阅读全文
摘要:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 数据范围: 链表长度 [0,500]。 样例: 输入:1->3->5 , 2->4->5 输出:1->2->3->4->5->5 代码: /** * Definition for singly-linked list.
阅读全文
摘要:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思考题: 请同时实现迭代版本和递归版本。 数据范围: 链表长度 [0,30]。 样例: 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->NULL 代码: 1.迭代版本 /** * Defini
阅读全文
摘要:给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围: 节点 val 值取值范围 [1,1000]。 节点 val 值各不相同。 链表长度 [0,500]。 样例: 给定如上所示的链表: [1, 2, 3, 4, 5, 6] 2 注意,这里的2表示编号是2的节
阅读全文
摘要:输入一个链表,输出该链表中倒数第 k 个结点。 注意: k >= 1; 如果 k 大于链表长度,则返回 NULL; 数据范围: 链表长度 [0,30]。 样例: 输入:链表:1->2->3->4->5 ,k=2 输出:4 代码: /** * Definition for singly-linked
阅读全文
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 数据范围: 数组长度 [0,100]。 数组内元素取值范围 [0,100]。 样例: 输入:[1,2,3,4,5] 输出: [1,3,5,2,4] 代码: class Solu
阅读全文
摘要:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 注意: 小数可以没有整数部分,例如.123等于0
阅读全文
摘要:请实现一个函数用来匹配包括'.'和'*'的正则表达式。 模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。 例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。 数
阅读全文
摘要:在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留。 数据范围: 链表中节点 val 值取值范围 [0,100]。链表长度 [0,100]。 样例1: 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2: 输入:1->1->1->2->3 输出:2
阅读全文

浙公网安备 33010602011771号