随笔分类 -  剑指offer

摘要:题目: 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。 题解: 注意大数溢出问题,故使用字符串更靠谱 阅读全文
posted @ 2019-10-11 21:48 自由之翼Az 阅读(113) 评论(0) 推荐(0)
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 一般解法: 直接相乘; 1 class Solution01 { 2 public: 3 double Power(double bas 阅读全文
posted @ 2019-10-11 21:02 自由之翼Az 阅读(270) 评论(0) 推荐(0)
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 有可能引起死循环解法: 每次判断最右端是不是1【与 & 1即可】,是就cnt++,然后右移一位,直到num为0,结束; 但是这只对正数有用,而负数右移是左端补充1,这样导致num最终成为 0xFFFFFFFF,从而右移成了死 阅读全文
posted @ 2019-10-11 20:19 自由之翼Az 阅读(220) 评论(0) 推荐(0)
摘要:题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 阅读全文
posted @ 2019-10-11 19:45 自由之翼Az 阅读(177) 评论(0) 推荐(0)
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2019-10-11 16:34 自由之翼Az 阅读(177) 评论(0) 推荐(0)
摘要:题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵 阅读全文
posted @ 2019-10-11 16:04 自由之翼Az 阅读(151) 评论(0) 推荐(0)
摘要:题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题解: 使用递归或者动态规划,明显,递归没有动态规划优 1 class Solution01 { 2 public: 3 int rectCover(int n 阅读全文
posted @ 2019-10-11 14:48 自由之翼Az 阅读(119) 评论(0) 推荐(0)
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 题解: 纯找规律题: 1 class Solution { 2 public: 3 int jumpFloorII(int number) { 4 if (number < 0) 阅读全文
posted @ 2019-10-11 14:38 自由之翼Az 阅读(103) 评论(0) 推荐(0)
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 把一个数组最开始 阅读全文
posted @ 2019-10-11 13:05 自由之翼Az 阅读(170) 评论(0) 推荐(0)
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 题解: 说俗一点,就是找规律; 不不,首先,我们分析一下,青蛙第一次可以跳一步,则其跳剩下的n-1个台阶的方法数为:f(n-1); 也可以跳两步,则其跳剩下n-2个台阶的 阅读全文
posted @ 2019-10-11 10:36 自由之翼Az 阅读(118) 评论(0) 推荐(0)
摘要:题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 有多种方法,简单的循环、递归、动态规划; 1 class Solution01 { 2 public: 3 int Fibonacci(int n) { 4 int a = 阅读全文
posted @ 2019-10-11 10:20 自由之翼Az 阅读(139) 评论(0) 推荐(0)
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 题解: 有两个栈,stack1和stack2 push只在stack1上操作,pop只在stack2上操作 当stack2不为空时,直接从stack2栈顶弹出 当stack2为空时,将stack1的数据全 阅读全文
posted @ 2019-10-11 09:43 自由之翼Az 阅读(101) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 题目的意思是,在一颗二叉树的中序遍历中,给出其中一个节点,让你找到中序中该节点的下一个节点 题解: 情况 1:某节点有右子树,下一节点为右子树中的最左子节 阅读全文
posted @ 2019-10-10 23:20 自由之翼Az 阅读(103) 评论(0) 推荐(0)
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 已知中序遍历和前序遍历,可以得到唯一的二叉树 1 c 阅读全文
posted @ 2019-10-10 22:49 自由之翼Az 阅读(122) 评论(0) 推荐(0)
摘要:题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 有多种方法。 1 class Solution { 2 public: 3 vector<int> printListFromTailToHead(ListNode* head) { 4 ListNode *p = head; 阅读全文
posted @ 2019-10-10 22:22 自由之翼Az 阅读(128) 评论(0) 推荐(0)
摘要:题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 注意事项: 《剑指offer》上的length为str的最大长度空间 而牛客上的lenght为str的长度,包括了'\0' 由于s 阅读全文
posted @ 2019-10-10 21:37 自由之翼Az 阅读(127) 评论(0) 推荐(0)
摘要:题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 方法一: 从0位置遍历 阅读全文
posted @ 2019-10-10 20:39 自由之翼Az 阅读(119) 评论(0) 推荐(0)
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 注意: 数组不一定是这样的: 1 2 3 4 5 6 7 8 9 而是这样的: 1 2 8 9 阅读全文
posted @ 2019-10-10 19:02 自由之翼Az 阅读(174) 评论(0) 推荐(0)