随笔分类 - 剑指offer
顺时针打印矩阵
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。 基本思想:因为是顺时针打印一个数组,
阅读全文
简单错误记录
摘要:题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并) 2.超过16个字符的文件名称,只记录文件的最后有效16个字符;
阅读全文
链表中的倒数第k个结点
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 基本思想:定义两个指针a,b分别指向头节点, a指针先向前走k-1步(注意:因为倒数节点是从倒数第一个结点开始的,而不是零),然后a指针和b指针一起向前移动, 直到a->next == NULL。此时,b指针所指向的结点。即为倒数第K个结点。 边
阅读全文
数值的整数次方
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 基本思想:首先考虑一下所有可能的情况,以及边界条件。 1. 指数为正数,正常算出次方的结果。 2. 指数为负数的一般情况:先对指数求绝对值,然后算出次方的结果,再取倒数。 3.
阅读全文
二进制中1的个数
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 对于这道题我们很容易想到的是先判断二进制数最右边的第一位是不是1,。接着把输入的整数右移一位,这样每次移动一位,直到整个整数变为0。 但是需要注意的是,如果输入一个负数,例如:0x80000000。把负数0x80000000
阅读全文
旋转数组的最小数字
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 基本思想:
阅读全文
用两个栈实现队列
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 基本思想:1. 插入一个元素a,将它插入stack1中; 2. 当弹出一个元素时:(1) 若stack2为空,而stack1不为空,则将stack1中的元素全部弹出到stack2中,然后将stack2栈顶
阅读全文
重建二叉树
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 基本思想:在中序序列中找到根节点的位置,根结点左边是
阅读全文
二维数组中的查找
摘要:题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 基本思想:首先选取数组右上角的数字。如果该数字等于要查找的数字,查找过程结束; 如果该数字大于要查找的数字,剔除这个数字
阅读全文
浙公网安备 33010602011771号