
《剑指offer》刷题总结
在剑指offer刷题过程中留下自己的反思总结,希望能提供给大家刷题思路。
God-Hrh
记录学习笔记和工作经验。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果:[ [3], [9,20], [15,7] ]提示:节点总数原创 2022-06-05 14:37:07 · 137 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如: 给定二叉树: [3,9,20,null,null,15,7], 返回:[3,9,20,15,7]提示:节点总数原创 2022-06-05 01:02:51 · 163 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例 1:输入:s = “abaccdeff” 输出:‘b’ 示例 2:输入:s = “” 输出:’ ’限制:0原创 2022-06-05 00:25:54 · 146 阅读 · 0 评论 -
剑指 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] ] 给定 target = 5,返回 true。给定 target原创 2022-06-04 23:46:00 · 113 阅读 · 0 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 1: 输入: [0,1,3] 输出: 2 示例 2: 输入: [0,1,2,3,4,5,6,7,9] 输出: 8 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 二分查找标准模版,定义left = 0,mid = left + (right-left)/2,right = nums.length-1.原创 2022-05-29 20:56:08 · 102 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
题目 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 二分查找标准模版,定义left,mid,right. 整体思路描述&哪些事需要封装成一个函数? 题目中给的数组有顺序 = 用二分。 有一种思路是查找到mid = targer的位置,然原创 2022-05-29 11:38:59 · 98 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 整体思路描述&哪些事需要封装成一个函数? 这道题可以按hash来做,key存nums[i],判断value是否大于1.空间复杂度原创 2022-05-28 12:09:31 · 96 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.” 输出:“We%20are%20happy.” 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 整体思路描述&哪些事需要封装成一个函数? 不定义额外变量。 实现时间复杂度O(n),空间复杂度O(1) 1。先遍历扫描一遍原字符串有count个空格,然后将原数组扩容为 “原size+count*2”的size。(“20%”是3个字符,因此1个空格再扩容原创 2022-05-28 11:32:48 · 96 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
题目 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]] 示例 3: 输入:head =原创 2022-05-28 11:43:12 · 114 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 迭代和递归两种做法。 迭代:定义3个局部变量。pre = null,cur = head,next = null; 整体思路描述&哪些事需要封装成一个函数? https://vdn3.原创 2022-05-18 01:01:45 · 142 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 阅题思考 需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么? 这题如果使用额外空间的话,就没意思了,定义一个List,遍历链表的同时存进该List,最后api反转变成数组返回就好了。或者用栈思路也很简单。 我们尝试下不使用额外空间,只在该链表身上操作,解答本题。 整体思路描述&哪些事需要封装成一个函数? 先整体扫描一遍得到该链表共有多少个元素原创 2022-05-17 22:34:04 · 413 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈原创 2022-05-15 12:02:50 · 120 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列原创 2022-05-15 10:25:09 · 104 阅读 · 0 评论