《剑指Offer》50道算法面试题

833 阅读4分钟

《剑指Offer》50道算法面试题 - C++版,本来一开始想用Java来写,不过看看了,JDK里封装了很多算法,用Java写就没意思了,于是用选择了C++,顺便也学习一下C++。

关于刷题方法,这里要说几句:因为本人也不擅长刷题,属于跳跃性思维的那种。开始刷了十几道就放弃了,最后找到了一种方法,给大家分享出来:

  1. 可以先粗略的过一遍题目,都有什么题型,还有一些自己关于题目的解法,如果有些题太难那就先暂时跳过;
  2. 详细的算一遍题,前面有了大概的了解,然后开始自己构思每道题的解题思路;
  3. 第三遍刷题,参考答案,结合自己之前的想法对比,此时就需要注意之前自己没有思路的题目;
  4. 开始动手写代码
  5. 再总结一遍自己写的,回顾一下。

好的,就到这里,大概需要5遍以上吧,这样多刷几遍题可以增强记忆~

面试题

面试题3:一个从左到右递增、从上到下递增的二维数组中判断一个整数是否存在
面试题4:把字符串的空格替换为“%20”
面试题5: 从尾到头打印链表
面试题6:通过前序遍历和中序遍历重建二叉树
面试题7: 用两个栈实现队列
面试题8: 旋转数组的最小数字
面试题9: 斐波那契数列
面试题10: 二进制中1的个数
面试题11: 数值的整数次方
面试题12: 打印从1到最大的n位数
面试题13: 在O(1)的时间删除链表结点
面试题14: 调整数组顺序使奇数位于偶数前面
面试题15: 链表中倒数第k个结点
面试题16: 反转链表
面试题17: 合并两个排序的链表
面试题18: 判断二叉树B是否为A的子结构
面试题19: 二叉树的镜像
面试题20: 顺时针打印矩阵
面试题21: 包含min函数的栈
面试题22: 已知栈的压入序列,判断是否为弹出序列
面试题23: 从上往下打印二叉树
面试题24: 判断数组是否符合二叉搜索树的后序遍历序列
面试题25: 二叉树中和为某一值得路径
面试题26: 复杂链表的复制
面试题27: 二叉搜索树转换为排序的双向链表
面试题28: 打印字符串中字符的所有排列
面试题29: 数组中出现次数超过一半的数字
面试题30: 从n个整数中找出最小的k个数
面试题31: 连续子数组的最大和
面试题32: 从1到n的整数中1出现的次数
面试题33: 把数组排成最小数
面试题34: 求第n个丑数
面试题35: 第一个只出现一次的字符
面试题36: 数组中的逆序对
面试题37: 两个链表第一个公共结点
面试题38: 数字在排序数组中出现的次数
面试题39.1: 二叉树的深度
面试题39.2: 判断二叉树是否为二叉平衡树
面试题40: 数组中只出现一次的数字(除两个数字外,其余都出现两次)
面试题41.1: 递增排序数组中查找和为s的两个数
面试题41.2: 打印出和为s的连续正数序列
面试题42.1: 翻转单词顺序,但单词中字符顺序不变
面试题42.2: 实现字符串左旋转功能
面试题43: 打印出n个骰子点数s所有可能出现的概率
面试题44: 随机抽5张牌是不是连续的(大小王可看成任意数字)
面试题45: 圆圈中最后剩下的数字
面试题46: 不使用乘除、if、while等求1+2+……+n
面试题47: 不用加减乘除做加法
面试题48: 不能被继承的类
面试题49: 把字符串转换为整数
面试题50: 树中两个结点的最低公共祖先

最后,祝大家刷题愉快~~~