起风了

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

剑指Offer面试题:2.二维数组中的查找

剑指Offer面试题:2.二维数组中的查找缩略图
一、题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。     例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返...

剑指Offer面试题:3.替换空格

剑指Offer面试题:3.替换空格缩略图
一、题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。    在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务...

剑指Offer面试题:4.从尾到头打印链表

剑指Offer面试题:4.从尾到头打印链表缩略图
一、题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。   到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出&rdq...

剑指Offer面试题:5.重建二叉树

剑指Offer面试题:5.重建二叉树缩略图
一、题目:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示的二叉树并输出它的头结点。  二、解题思路   在二叉树的...

剑指Offer面试题:6.用两个栈实现队列

剑指Offer面试题:6.用两个栈实现队列缩略图
一、题目:用两个栈实现队列 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。   原文是使用C++结合模板实现的定义,这里我们采用C#结合泛型来实现这个队列的定义,我们要实现的就是两个方法:AppendTa...

剑指Offer面试题:7.旋转数组的最小数字

剑指Offer面试题:7.旋转数组的最小数字缩略图
一、题目:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。   这道题最直观的解法并不难,从头到尾遍历数组一次,我们就能...

剑指Offer面试题:8.斐波那契数列

剑指Offer面试题:8.斐波那契数列缩略图
一、题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:  二、效率很低的解法   很多C/C++/C#/Java语言教科书在讲述递归函数的时候,大多都会用Fibonacci作为例子,因此我们会对这种解法烂熟于心: public static long FibonacciRecursi...

剑指Offer面试题:9.二进制中1的个数

剑指Offer面试题:9.二进制中1的个数缩略图
一、题目:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 二、可能引起死循环的解法   一个基本的思路:先判断整数二进制表示中最右边一位是不是1。接着把输入的整数右移一位,此时原来处于从...

剑指Offer面试题:10.数值的整数次方

剑指Offer面试题:10.数值的整数次方缩略图
一、题目:数值的整数次方 题目:实现函数double Power(doublebase, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。   在.NET Framework提供的BCL中,Math类实现了一个Pow方法,例如要求2的三次方,可以通过以下代码实现: double result = Math.Pow(2, 3);   ...

剑指Offer面试题:11.打印1到最大的n位数

剑指Offer面试题:11.打印1到最大的n位数缩略图
一、题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 二、不同的解法 2.1 不假思索的解法   最容易想到的办法是先求出最大的n位数,然后用一个循环从1开始逐个打印: static void Print1ToMaxOfNDigitsSimple(in...