剑指offer面试题
文章平均质量分 90
so_u
May the odds be ever in your favor
展开
-
剑指offer---010(斐波那契数列)
更多题目请点链接:《剑指offer》目录索引问题描述: 写入一个函数,输入n,求斐波那契数列的第n项,斐波那契数列的定义如下: 思路: 三种算法:递归,非递归,矩阵 时间复杂度:递归O(2^n),非递归O(n),矩阵O(logn) 算法比较:递归算法效率低,重复计算,容易溢出;非递归算法避免重复计算,比较实用;矩阵算法效率高,但包含生僻的数学算法,不实用...原创 2018-01-21 19:08:31 · 366 阅读 · 0 评论 -
剑指offer---003(找出数组中重复出现的数字)
更多题目请点链接:《剑指offer》目录索引1. 找出数组中出现的数字问题描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了, 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}, 那么对应的输出是重复的数字2或者3。思路数组...原创 2018-04-11 20:14:10 · 382 阅读 · 0 评论 -
剑指offer---006(从尾到头打印单链表)
更多题目可点链接:《剑指offer》目录索引题目描述输入一个链表的头结点,从尾到头反过来打印出每个结点的值。思路:递归打印非递归借助栈具体过程可点链接:(http://blog.csdn.net/zhangye3017/article/details/78933001)代码:typedef struct SListNode{ int _data;...原创 2018-04-12 18:25:51 · 214 阅读 · 0 评论 -
剑指offer----007(重建二叉树)
更多题目:《 剑指offer》 目录索引问题描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输 入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建二叉树并输出它的头结点。思路:前序遍历的第一个节点为二叉树的头节点根据头节点在中序遍历中找出头原创 2018-04-18 19:36:49 · 262 阅读 · 0 评论 -
剑指offer---009(两个栈实现一个队列)
题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。思路:栈具有特点后进先出特点,队列具有先进先出的特点,两个栈实现队列,满足以下条件:入数据时,始终保证栈为空出数据时,取非空栈的栈顶元素具体过程可点链接:https://blog.csdn.net/zhangye3017/articl原创 2018-04-18 19:57:40 · 213 阅读 · 0 评论 -
剑指offer----001(赋值运算符重载函数)
更多题目请点链接:《 剑指offer》 目录索引题目描述:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。#include<cstring>#include<cstdio>class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str);原创 2018-04-19 14:52:43 · 553 阅读 · 0 评论 -
剑指offer---018(删除链表的节点)
更多题目可点链接:《 剑指offer》 目录索引题目一给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:时间复杂度为O(1),如果删除的非尾节点,采用替换法删除如果是尾节点,采用一般删除替换法删除的图解:https://blog.csdn.net/zhangye3017/article/details/78933001代码:#include<iostream>u原创 2018-04-19 16:12:49 · 356 阅读 · 1 评论 -
剑指offer-----021(调整数组顺序使奇数位于偶数前面)
更多题目:《 剑指offer》 目录索引题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。方法一: 利用左右指针,left和right。left指向数组首元素,right指向数组尾元素。 左指针从左往右找,找到偶数停止 右指针从右往左找,找到奇数停止 交换左右指针的元素 当左右...原创 2018-05-06 14:20:08 · 216 阅读 · 0 评论 -
剑指offer ------065(不用加减乘除求两个数的加法)
题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。思路: 在数学中,我们一直使用四则运算来进行求和等运算,那么在计算机中,我们可以使用位运算来进行四则运算 常用的有,左移(&lt;&lt;)代表乘2,右移(&gt;&gt;)代表除2 此题的解法为,将给定两个数进行异或,在使两个操作数进行按位异或,在左移1位当左移后的数为0时...原创 2018-05-21 22:12:10 · 278 阅读 · 0 评论 -
剑指offer ---- 063(股票的最大利润)
1. 题目描述 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5,7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。2. 思路 首先,我们知道利润 = 收入 - 本金 其次,这里需要求最大利润,则可采取:价格最低时买...原创 2018-05-22 17:42:16 · 1049 阅读 · 1 评论 -
剑指offer--018(树的子结构)
题目描述输入两棵树A和B,判断B是不是A的子结构。思路:如果A和B两个树中任意一个树为空树,则一定没有子结构采用递归思想,将二叉树划分为根节点,左子树和右子树如果根节点相同,比较左右子树是否相等如果根节点不相同,去左子树中进行比较如果在左子树中没有找到,去右子树中进行比较代码: typedef struct BTreeNode{ int _data; struct B原创 2018-04-11 18:00:10 · 254 阅读 · 0 评论 -
《 剑指offer》 目录索引
剑指offer—001(赋值运算符重载函数)剑指offer—003(找出数组中重复的数字)剑指offer—-004(二维数组中查找整数)剑指offer—-005 (字符串空格替换)剑指offer—006(从尾到头打印单链表)剑指offer—-007(重建二叉树)剑指offer—009(两个栈实现一个队列)剑指offer—010(斐波那契数列)...原创 2018-03-03 20:48:41 · 2428 阅读 · 0 评论 -
剑指offer---16(数值的整数次方)
更多题目请点链接:《剑指offer》目录索引问题描述: 实现一个函数double Power(double base,int exponent),求base 的 exponent次方。不得使用库函数,同时不需要考虑大数问题思路: 数值的整数次方,我们可以从以下几个方面考虑: 1)base的取值:非0还是0,如果非0,则进行计算,如果是0,需进行特殊处理 ...原创 2018-01-28 14:49:02 · 234 阅读 · 0 评论 -
剑指offer---011(旋转数组中的最小数字)
更多题目请点链接:《剑指offer》目录索引问题描述: 把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}为{1, 2, 3 ,4 , 5,}的一个旋转数组,该数组的最小值为1分析问题: 根据描述,可以看到旋转数组有几个特点: 1) 未旋转之前的数组是一个有序数组 2) 旋转之后的...原创 2018-01-23 10:24:56 · 204 阅读 · 0 评论 -
剑指offer---012(字符串在矩阵中的路径)
更多题目请点链接:《剑指offer》目录索引问题描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用下划线标出)。但矩阵中不包含字符串“abf...原创 2018-01-24 18:19:49 · 396 阅读 · 0 评论 -
剑指offer----013(机器人运动的范围)
更多题目请点链接:《剑指offer》目录索引问题描述: 地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18。但它不能进入方格(35, 38),因为3+5+3+8=19。请问该机器人能够到达多少个格子...原创 2018-01-24 17:41:08 · 243 阅读 · 0 评论 -
剑指offer---17(打印1到最大n位数)
更多题目请点链接:《剑指offer》目录索引问题描述: 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。思路1: (1)此题可归为大数处理问题:n可能很大,打印最大的n位数就存在溢出现象 (2)解决方法:采用高精度算法;使用一个数组arr来表示所要打印的数,将其以字符串的形式存储,并模拟数字加法 (...原创 2018-02-01 20:54:13 · 314 阅读 · 0 评论 -
剑指offer------004(二维数组中查找整数)
更多题目请点链接:《剑指offer》目录索引问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数分析问题:从问题描述中,可以确定一下几点: 1)在二维数组中查找整数,根据学过的知识可知,二维数组可看做一维数组,故此题可在一维数组中求解 2)此数组的...原创 2018-01-18 16:32:12 · 365 阅读 · 0 评论 -
剑指offer----015(二进制中1的个数)
更多题目请点链接:《剑指offer》目录索引问题描述: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如:把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2思路1: 求二进制1的个数,首先想到操作符&(按位与),&规则:0&1=1 1&1=1 采用&的规则,对应的二进制位&1,并...原创 2018-01-27 12:42:11 · 381 阅读 · 0 评论 -
剑指offer----005(字符串空格替换)
更多题目请点链接:《剑指offer》目录索引问题描述: 实现一个函数,将字符串中的每个空格替换成%20。例如:”We are hanppy.“,则输出“We%20are%20happy.”,要求时间复杂度为O(n)问题分析: 根据描述,此题意思改变字符串内容,并且改变了原字符串长度; 要求时间复杂度为0(n),故不能直接替换;思路: 第一步,...原创 2018-01-19 14:24:13 · 328 阅读 · 0 评论 -
剑指offer---19(正则表达式匹配)
更多题目请点链接:《剑指offer》目录索引问题描述: 请实现一个函数用来匹配包含 ‘.’ 和 ’ * ‘的正则表达式。模式中的字符 ’ .’ 表示任意一个字符,而 ’ * ’ 表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a和”ab*ac*a”匹配,但与”aa.a”及”ab*a”均不匹配。...原创 2018-02-03 14:27:28 · 418 阅读 · 0 评论 -
剑指offer----015(剪绳子)
更多题目请点链接:《剑指offer》目录索引问题描述: 给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]* k[1]*……*k[m]可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 时得到最大的乘积18。算法1:动态规划 采用递归思...原创 2018-01-27 17:34:42 · 591 阅读 · 0 评论 -
剑指offer----061(扑克牌的顺子)
题目描述 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。思路 首先扑克牌是由1~13组成的,在这里的顺子指的是5张牌是不是连续的,比如1,2,3,4,5就是连续的,因此我们可以将这五张牌进行排序,在去判断是否是连续的 其次大王小王可以代替任何一个数字,故此我们可以...原创 2018-05-23 23:58:32 · 284 阅读 · 1 评论