起风了

“路海长 青夜旷 越过群山追斜阳”

剑指Offer面试题:12.在O(1)时间删除链表结点

剑指Offer面试题:12.在O(1)时间删除链表结点缩略图
一、题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。   原文采用的是C/C++,这里采用C#,节点定义如下: public class Node<T> { // 数据域 public T Item { get; set; } // 指针域 public Node...

剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面

quick sort
一、题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。   例如有以下一个整数数组:12345,经过调整后可以为:15342、13542、13524等等。 二、解题思路 2.1 基本解法   如果不考虑...

剑指Offer面试题:14.链表的倒数第k个节点

剑指Offer面试题:14.链表的倒数第k个节点缩略图
PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善。 一、题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是...

剑指Offer面试题:15.反转链表

剑指Offer面试题:15.反转链表缩略图
一、题目:反转链表 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。   链表结点定义如下,这里使用的是C#描述: public class Node { public int Data { get; set; } // 指向后一个节点 public Node Next { get; set; } public ...

剑指Offer面试题:16.合并两个排序的链表

剑指Offer面试题:16.合并两个排序的链表缩略图
PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一、题目:合并两个排序的链表 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入下...

剑指Offer面试题:17.树的子结构

剑指Offer面试题:17.树的子结构缩略图
一、题目:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构。例如下图中的两棵二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构。   该二叉树的节点定义如下,这里使用C#语言描述: public class BinaryTreeNode { public int Data { get; set; } pu...

剑指Offer面试题:18.二叉树的镜像

剑指Offer面试题:18.二叉树的镜像缩略图
一、题目:二叉树的镜像 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像。   该二叉树节点的定义如下,采用C#语言描述: public class BinaryTreeNode { public int Data { get; set; } public BinaryTreeN...

剑指Offer面试题:19.包含Min函数的栈

剑指Offer面试题:19.包含Min函数的栈缩略图
一、题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。   这里我们要实现的就是min、push以及pop三个方法: public class MinInStack<T> where T : struct { private Stack&...

剑指Offer面试题:20.栈的压入、弹出序列

剑指Offer面试题:20.栈的压入、弹出序列缩略图
一、题目:栈的压入、弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。 ...

剑指Offer面试题:21.从上到下打印二叉树

剑指Offer面试题:21.从上到下打印二叉树缩略图
一、题目:从上到下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入下图中的二叉树,则依次打印出8、6、10、5、7、9、11。   二叉树节点的定义如下,采用C#语言描述: public class BinaryTreeNode { public int Data { get; set; } ...