
《剑指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 · 126 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],返回:[3,9,20,15,7]提示:节点总数原创 2022-06-05 01:02:51 · 151 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例 1:输入:s = “abaccdeff”输出:‘b’示例 2:输入:s = “”输出:’ ’限制:0原创 2022-06-05 00:25:54 · 141 阅读 · 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 · 105 阅读 · 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 · 97 阅读 · 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 · 92 阅读 · 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 · 89 阅读 · 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 · 92 阅读 · 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 · 110 阅读 · 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 · 129 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]阅题思考需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么?这题如果使用额外空间的话,就没意思了,定义一个List,遍历链表的同时存进该List,最后api反转变成数组返回就好了。或者用栈思路也很简单。我们尝试下不使用额外空间,只在该链表身上操作,解答本题。整体思路描述&哪些事需要封装成一个函数?先整体扫描一遍得到该链表共有多少个元素原创 2022-05-17 22:34:04 · 404 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈原创 2022-05-15 12:02:50 · 112 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列原创 2022-05-15 10:25:09 · 100 阅读 · 0 评论