剑指Offer
Black.Spider
宝剑锋从磨砺出,梅花香自苦寒来
展开
-
面试题12:矩阵中的路径(M)
问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径。解题方法深度优先搜索(回溯法)void DFS(vector...原创 2020-03-31 21:35:05 · 227 阅读 · 0 评论 -
面试题11:旋转数组的最小数字
问题描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。解决方法1.循环遍历int findMinNum(vector<int> data) { if(dat...原创 2020-03-29 14:51:31 · 113 阅读 · 0 评论 -
面试题8:二叉树的下一个结点
问题描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解决方法struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode* next; TreeNode(int x): ...原创 2020-03-27 21:24:19 · 90 阅读 · 0 评论 -
面试题7:重建二叉树
问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解决方法1.递归法struct TreeNode { int val; TreeNode* le...原创 2020-03-27 17:16:18 · 224 阅读 · 0 评论 -
面试题5:替换空格
问题描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解决方法1.暴力法void ReplaceBlank(char* str) { for(int i = 0; i < strlen(str); ++i) { if(s...原创 2020-03-27 15:57:33 · 117 阅读 · 0 评论 -
面试题3:数组中重复的数字
问题描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解决方法哈希表int findDuplicateNum(vecto...原创 2020-03-27 15:13:20 · 137 阅读 · 0 评论