剑指offer面试题内容 第2章 面试需要的基础知识 面试题1:赋值运算符函数 面试题2:实现Singleton模式  解答 面试题3:数组中重复的数字 解答 面试题4:二维数组中的查找 解答 面试题5:替换空格 解答 面试题6:从尾到头打印链表 解答 面试题7:重建二叉树 解答 面试题8:二叉树的下一个节点 解答 面试题9:用两个栈实现队列 解答 面试题10:斐波那切数列 解答 面试题11:旋转数组的最小数字 解答 面试题12:矩阵中的路径 解答 面试题13:机器人的运动范围 解答 面试题14…
1.1.题目1 剑指 Offer 04. 二维数组中的查找 1.2.解法 其实就是暴力解法的升级版,从最后一行开始判断,通过num当前的大小, 如果还是大于目标值则行数-1,若是小于则列数+1 1.3.代码 class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix==null || matrix.length==0 ||matrix[0].length==0){ retu…
数组中重复的数字 二维数组中查找 字符串 替换空格 二叉树的编码和解码 从尾到头打印链表 重建二叉树 二叉树的下一个节点 2个栈实现队列 斐波那契数列 旋转数字 矩阵中的路径 机器人的运动范围 剪绳子 二进制表示中1的个数 数值的整数次方 打印1到最大的n位数 在O(1)时间删除链表结点 删除链表中重复的结点 正则表达式匹配 表示数值的字符串 调整数组顺序使奇数位于偶数前面 链表中倒数第k个结点 一个链表中包含环,如何找出环的入口结点 反转链表 合并两个排序链表 输入两棵二叉树A,B,判断B是不…
// 面试题26:树的子结构 // 题目:输入两棵二叉树A和B,判断B是不是A的子结构. #include <iostream> struct BinaryTreeNode { double m_dbValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; bool DoesTree1HaveTree2(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2); bool Equal(doub…
// 面试题19:正则表达式匹配 // 题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式.模式中的字符'.' // 表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次).在本题 // 中,匹配是指字符串的所有字符匹配整个模式.例如,字符串"aaa"与模式"a.a" // 和"ab*ac*a"匹配,但与"aa.a"及"ab*a"均不匹配. #include <iostream&g…
// 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不 // 能使用atoi或者其他类似的库函数. #include <iostream> long long StrToIntCore(const char* str, bool minus); , kInvalid }; int g_nStatus = kValid;//设置全局错误变量,用来反映无效输入 int StrToInt(const char* str) { g_n…
// 面试题63:股票的最大利润 // 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股 // 票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5, // 7, 12, 16, 14}.如果我们能在价格为5的时候买入并在价格为16时卖出,则能 // 收获最大的利润11. #include <iostream> //如果从头到尾遍历所有的数对,时间复杂度O(n^2),显然不够好 //若固定一个值,直接找前面的最小值,这样更好 int MaxD…
// 面试题61:扑克牌的顺子 // 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的. // 2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王可以看成任意数字. #include <iostream> int Compare(const void *arg1, const void *arg2); bool IsContinuous(int* numbers, int length) { )//边界判断 return false; qsort(nu…
// 面试题60:n个骰子的点数 // 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s // 的所有可能的值出现的概率. #include <iostream> #include <math.h> ; // ====================方法一==================== //使用递归,还是会有重复计算 void Probability(int number, int* pProbabilities); void Probabili…
// 面试题57(二):为s的连续正数序列 // 题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数). // 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1-5. // 4-6和7-8. #include <iostream> void PrintContinuousSequence(int small, int big); void FindContinuousSequence(int sum) { ) return; ; ;…