剑指offer
学习小菜鸡
跟着学习小菜鸡一起学习算法与计算机基础知识!本博客专注于LeetCode算法的详细讲解,同时专注于计算机基础知识,包括计算机网络、操作系统以及数据结构等等,使用最直白的语言来讲解计算机知识,希望大家能够喜欢,最好也能够给小编一个赞与关注,让小编有更大的动力,谢谢大家,么么哒!
展开
-
剑指offer--面试题12. 矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。 [[“a”,“b”,“c”,“e”], [“s”,“f”,“c”,“s”], [“a”,“d”,...原创 2020-03-31 17:24:58 · 169 阅读 · 0 评论 -
剑指offer--面试题15. 二进制中1的个数
class Solution { public: int hammingWeight(uint32_t n) { int count = 0; while (n) { if (n % 2 == 1) { count ++; } n = n / 2; } re...原创 2020-03-27 21:55:07 · 138 阅读 · 0 评论 -
剑指offer---面试题18. 删除链表的节点
/* * 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [...原创 2020-03-27 21:46:28 · 169 阅读 · 0 评论 -
剑指offer---面试题11. 旋转数组的最小数字
/* * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 * 例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例 2: 输入:[2,2,2,0,1] 输出:0 * * */ #incl...原创 2020-03-27 21:12:11 · 110 阅读 · 0 评论 -
剑指offer--面试题10- II. 青蛙跳台阶问题
设跳上 n 级台阶有f(n) 种跳法。在所有跳法中,青蛙的最后一步只有两种情况: 跳上 1 级或 2 级台阶。 当为 1 级台阶: 剩 n−1 个台阶,此情况共有 f(n−1) 种跳法; 当为 2 级台阶: 剩n−2 个台阶,此情况共有f(n−2) 种跳法。 f(n) 为以上两种情况之和,即 f(n)=f(n-1)+f(n-2) ,以上递推性质为斐波那契数列。本题可转化为 求斐波那契数列第 nn ...原创 2020-03-27 20:54:49 · 211 阅读 · 0 评论 -
剑指offer--面试题10- I. 斐波那契数列
/* *动态规划解析: 状态定义: 设 dpdp 为一维数组,其中 dp[i]dp[i] 的值代表 斐波那契数列第 ii 个数字 。 转移方程: dp[i + 1] = dp[i] + dp[i - 1]dp[i+1]=dp[i]+dp[i−1] ,即对应数列定义 f(n + 1) = f(n) + f(n - 1)f(n+1)=f(n)+f(n−1) ; 初始状态: dp[0] = 0dp[0...原创 2020-03-27 20:35:58 · 169 阅读 · 0 评论 -
剑指offer--面试题09. 用两个栈实现队列
/* * 用两个栈实现一个队列。队列的声明如下, * 请实现它的两个函数 appendTail 和 deleteHead , * 分别完成在队列尾部插入整数和在队列头部删除整数的功能。 * (若队列中没有元素,deleteHead 操作返回 -1 ) * * */ #include <iostream> #include <stack> using name...原创 2020-03-27 18:40:49 · 139 阅读 · 0 评论 -
剑指offer--面试题07. 重建二叉树
/* *输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。 * 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 * * 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] * */ #include <iostream> #include <vector> using namespa...原创 2020-03-27 18:15:49 · 134 阅读 · 0 评论 -
剑指offer--面试题06. 从尾到头打印链表
/* * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 * * 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] * */ #include <iostream> #include <stack> #include <vector> using namespace std; struct ListNode ...原创 2020-03-27 17:22:11 · 176 阅读 · 0 评论 -
剑指offer--面试题05. 替换空格
/* * 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 * * 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." * */ #include <iostream> #include <vector> #include <string> using namespace std; c...原创 2020-03-27 16:43:51 · 142 阅读 · 0 评论 -
剑指offer--面试题04. 二维数组中的查找
/* * 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, ...原创 2020-03-27 16:04:05 · 139 阅读 · 0 评论 -
剑指offer--面试题03. 数组中重复的数字
/* * 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 * * */ #include <iostream> #in...原创 2020-03-27 15:24:23 · 243 阅读 · 0 评论