![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 72
MGonster
麻省理工学院
展开
-
剑指offer-排序
剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 方法一:哈希表 class Solution: def findrepeatNumbers(self, nums: [int]) -> int:原创 2022-04-09 13:28:56 · 416 阅读 · 0 评论 -
剑指offer-动态规划 II
剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示: 1 <= arr.length <= 10^5 -100 <= arr[i] <= 100 若 dp[i−1]≤0, dp[i-1] \leq 0 , dp[原创 2022-04-06 16:53:06 · 48 阅读 · 0 评论 -
剑指offer-搜索与回溯算法
面试题32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000 算法流程: 特例处理: 当树的根节点为空,则直接返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root]原创 2022-04-01 15:28:46 · 72 阅读 · 0 评论 -
剑指offer-搜索与回溯算法II
剑指 Offer 26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B: 4 / 1 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1: 输入:A = [1,2,3], B = [3,1] 输出:false 示例 2: 输入:A = [3,4,5,1,2], B =原创 2022-04-01 15:27:23 · 116 阅读 · 0 评论 -
剑指offer-动态规划
剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:1原创 2022-04-01 15:23:36 · 68 阅读 · 0 评论 -
剑指offer-搜索与回溯算法
面试题32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000 算法流程: 特例处理: 当树的根节点为空,则直接返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root]转载 2022-03-16 16:41:27 · 87 阅读 · 0 评论 -
剑指offer-查找算法II
剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30原创 2022-03-16 16:39:28 · 51 阅读 · 0 评论 -
剑指offer-查找算法
剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入:[2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 方法一:哈希表 / Set 利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接原创 2022-03-11 17:06:24 · 120 阅读 · 0 评论 -
剑指offer-字符串
剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 方法: 当 c 为空格时:向 res 后添加字符串 “%20” ; 当 c 不为空格时:向 res 后添加字符 c ; class Solution: def replaceSpace(self, s: str) -> str:原创 2022-03-10 14:30:45 · 53 阅读 · 0 评论 -
剑指offer-栈与队列
剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输原创 2022-03-10 14:26:57 · 145 阅读 · 0 评论 -
剑指offer-链表
剑指 Offer 06. 从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 方法一:辅助栈法 解题思路: 链表特点: 只能从前至后访问每个节点。 题目要求: 倒序输出节点值。 这种 先入后出 的需求可以借助 栈 来实现。 思路: 入栈: 遍历链表,使用 append() 方法将各节点值 push 入栈。 出栈: 将各节点值 pop 出栈,存原创 2022-03-10 14:25:27 · 87 阅读 · 0 评论