剑指offer
文章平均质量分 77
Wupke
以慕灵阁之名践行:心怀初学者的姿态,Stay hungry, Stay foolish!
展开
-
【求二叉树的最长路径】
自定义二叉树,并求出二叉树的最长路径思路:求出二叉树的深度depth,再遍历一遍二叉树,找到并记录长度为depth的路径即可。## time:2022年4月23日23:12:21# author:Wupke# description: 求二叉树的最长路径,思路:求出二叉树的深度depth,再遍历一遍二叉树,找到并记录长度为depth的路径即可。class TreeNode: # 定义二叉树 def __init__(self, val=0, left=None, right=No.原创 2022-04-23 23:26:51 · 1336 阅读 · 0 评论 -
【数据结构与算法-搜索(BFS、DFS)系列典例题汇总】
【数据结构与算法-搜索(BFS、DFS)系列典例题汇总】典例1、岛屿数量(medium)典例2、词语阶梯(medium)典例3、词语阶梯2(hard)典例4、火柴棍摆正方形(medium)典例5、收集雨水(hard)典例1、岛屿数量(medium)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现:可本地运行测试的完整代码:典例2、词语阶梯(medium)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现原创 2022-03-21 00:56:57 · 1362 阅读 · 0 评论 -
【力扣—剑指 Offer(第 2 版)简单题目解析汇总】
【力扣—剑指 Offer(第 2 版)简单题目解析汇总】说明1、基本字符串数组数组 - 排序矩阵/模拟枚举2、算法动态规划深度优先搜索广度优先搜索递归分治记忆化搜索快速选择二分查找3、基础数据结构树(二叉树)二叉搜索树栈队列堆(优先队列)哈希表链表4、技巧性题目双指针位运算计数设计说明简单题目共计38道,按照标签分类为:基本、算法、基础数据结构、技巧等,具体如下。1、基本字符串剑指 Offer 05. 替换空格.剑指 Offer 50. 第一个只出现一次的字符.剑指offer–5原创 2022-02-27 03:23:54 · 952 阅读 · 0 评论 -
【剑指offer--58-1.翻转单词顺序】
《剑指offer第二版》58-1.翻转单词顺序题目要求解题代码python语法解析c++原题链接题目要求题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hell原创 2021-05-11 11:42:34 · 398 阅读 · 0 评论 -
【剑指 Offer 68 - I & II . 二叉搜索树/二叉树的最近公共祖先】
【剑指 Offer 68 - I. 二叉搜索树的最近公共祖先】题目描述:示例:解析思路1:迭代遍历代码(cpp)代码(python3)解析思路2:递归代码(cpp)代码(python3)**剑指 Offer 68 - II. 二叉树的最近公共祖先**代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/solution/原创 2022-02-26 15:16:29 · 216 阅读 · 0 评论 -
【剑指 Offer 55 - II. 平衡二叉树】
【剑指 Offer 39. 数组中出现次数超过一半的数字】题目描述:示例:解析思路1:代码(cpp)代码(python3)复杂度分析:解析思路2:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例:原创 2022-02-26 12:39:39 · 598 阅读 · 0 评论 -
【剑指 Offer 55 - I. 二叉树的深度】
【剑指 Offer 55 - I. 二叉树的深度】题目描述:示例:解析思路1:后序遍历(DFS)->递归 :max(左、右子树层数)+1代码(cpp)代码(python3)解析思路2:层序遍历(BFS)代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成原创 2022-02-25 12:43:59 · 714 阅读 · 1 评论 -
【剑指 Offer 54. 二叉搜索树的第k大节点】
【剑指 Offer 54. 二叉搜索树的第k大节点】题目描述:示例:解析思路1:暴力解法代码(python3)代码(cpp)解析思路2:利用 二叉查找树的遍历性质(中序遍历+提前返回)代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof给定一棵二叉搜索树,请找出其中第 k 大的节点的值。示例:示例1:输原创 2022-02-24 23:14:46 · 496 阅读 · 0 评论 -
【剑指 Offer 32 - II. 从上到下打印二叉树 II】
【剑指 Offer 32 - II. 从上到下打印二叉树 II】题目描述:示例:解析思路:代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。即:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例:原创 2022-02-24 11:18:07 · 407 阅读 · 0 评论 -
【剑指 Offer 30. 包含min函数的栈】
【剑指 Offer 30. 包含min函数的栈】题目描述:示例:解析思路1:双栈( 栈A + 有序辅助栈 B)代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数- - 在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。同 155题目 :设原创 2022-02-23 14:18:15 · 255 阅读 · 0 评论 -
【剑指 Offer 29. 顺时针打印矩阵】
【剑指 Offer 29. 顺时针打印矩阵】题目描述:示例:解析思路1:按照层模拟 / 设定边界打印代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。即:给一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:示例1原创 2022-02-23 11:20:57 · 584 阅读 · 0 评论 -
【剑指 Offer 27. 二叉树的镜像】
【剑指 Offer 39. 数组中出现次数超过一半的数字】题目描述:示例:解析思路1:代码(python3)代码(cpp)复杂度分析:解析思路2:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。可以假设原创 2022-02-22 15:26:18 · 260 阅读 · 0 评论 -
【剑指 Offer 28. 对称的二叉树】
【剑指 Offer 28. 对称的二叉树】题目描述:示例:解析思路1:遍历节点,递归判断代码(python3)代码(cpp)解析思路2:使用队列(栈)存取节点数值比较判断代码(cpp)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4原创 2022-02-22 15:25:07 · 216 阅读 · 0 评论 -
【剑指 Offer 42. 连续子数组的最大和】
【剑指 Offer 42. 连续子数组的最大和】题目描述:示例:解析思路1:动态规划代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。子数组 是数组中的一个连续部分。要求时间复杂度为O(n)。示例:示例1:输入:原创 2022-02-21 16:57:06 · 289 阅读 · 0 评论 -
【剑指 Offer 53 - I. 在排序数组中查找数字 I】
【剑指 Offer 53 - I. 在排序数组中查找数字 I】题目描述:示例:解析思路1:遍历+计数代码(python3)代码(cpp)解析思路2:二分法查找代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/统计一个数字在排序数组中出现的次数。示例:示例1:输入: nums = [5,7,7,8原创 2022-02-21 16:54:36 · 197 阅读 · 0 评论 -
【剑指 Offer 40. 最小的k个数】
【剑指 Offer 40. 最小的k个数】题目描述:示例:解析思路1:排序输出代码(python3)代码(cpp)解析思路2:基于快速速排序思想解法代码(python3)代码(cpp)复杂度分析:解析思路3:堆代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2原创 2022-02-21 16:53:37 · 716 阅读 · 0 评论 -
【剑指 Offer 53 - II. 0~n-1中缺失的数字】
【剑指 Offer 53 - II. 0~n-1中缺失的数字】题目描述:示例:解析思路1:直接暴力解法代码(python3)代码(cpp)解析思路2:二分法查找代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组原创 2022-02-21 16:52:52 · 245 阅读 · 0 评论 -
【剑指 Offer 57. 和为s的两个数字】
【剑指 Offer 57. 和为s的两个数字】题目描述:示例:解析思路1:哈希表解析思路2:双指针代码(python3)代码(cpp)解析思路3:二分查找 + 双指针代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即原创 2022-02-21 16:51:57 · 420 阅读 · 0 评论 -
【剑指 Offer 57 - II. 和为s的连续正数序列】
【剑指 Offer 57 - II. 和为s的连续正数序列】题目描述:示例:解析思路1:双指针 (滑动窗口)代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排原创 2022-02-21 16:51:10 · 203 阅读 · 0 评论 -
【剑指 Offer 61. 扑克牌中的顺子】
【剑指 Offer 61. 扑克牌中的顺子】题目描述:示例:解析思路1:集合set + 遍历判断代码(python3)代码(cpp)解析思路2: 排序 + 遍历代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,原创 2022-02-21 16:50:32 · 452 阅读 · 0 评论 -
【剑指 Offer 62. 圆圈中最后剩下的数字】
【剑指 Offer 62. 圆圈中最后剩下的数字】题目描述:示例:解析思路1:代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、原创 2022-02-21 16:49:55 · 304 阅读 · 0 评论 -
【剑指 Offer 65. 不用加减乘除做加法】
【剑指 Offer 65. 不用加减乘除做加法】题目描述:示例:解析思路1:代码(cpp)代码(python)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:示例1:输入: a = 1, b = 1输出: 2提示:原创 2022-02-21 16:48:45 · 380 阅读 · 0 评论 -
【剑指 Offer 39. 数组中出现次数超过一半的数字】
【剑指 Offer 39. 数组中出现次数超过一半的数字】题目描述:示例:解析思路:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。可以假设数组是非空的,并且给定的数组总是存在多数元素。示例:示原创 2022-01-21 17:23:01 · 672 阅读 · 0 评论 -
【剑指 Offer 21. 调整数组顺序使奇数位于偶数前面】
【剑指 Offer 21. 调整数组顺序使奇数位于偶数前面】题目描述:示例:解析思路 1:遍历直接区分奇偶代码(python3)代码(cpp)解析思路 2: 双指针代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/输入一个整数数组,实现一个函数来调整该数组中数字的顺序原创 2022-01-08 21:10:58 · 650 阅读 · 0 评论 -
【剑指 Offer 58 - II. 左旋转字符串 】
【剑指 Offer 58 - II. 左旋转字符串】题目描述:示例:解析思路:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:示例1:输入: 1->2->3->4->5->NULL输出: 5->原创 2021-12-28 09:34:35 · 281 阅读 · 0 评论 -
【剑指 Offer 50. 第一个只出现一次的字符】
【剑指 Offer 50. 第一个只出现一次的字符】题目描述:示例:解析思路:代码(python3)代码(cpp)复杂度分析:】)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:示例1:输入: 1->2->3->4->5->NULL输出: 5->4-原创 2021-12-23 12:39:29 · 1296 阅读 · 0 评论 -
【剑指 Offer 52. 两个链表的第一个公共节点】
【剑指 Offer 52. 两个链表的第一个公共节点】题目描述:示例:解析思路:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/输入两个链表,找出它们的第一个公共节点。示例:示例1:输入: 1->2->3->4->5->NULL输原创 2021-12-21 13:36:59 · 191 阅读 · 0 评论 -
【剑指 Offer 25. 合并两个排序的链表】
【剑指 Offer 25. 合并两个排序的链表】题目描述:示例:解析思路:代码(python3)代码(cpp)复杂度分析:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:示例1:输入: 1->2->3->4->5->NULL输原创 2021-12-21 11:27:52 · 266 阅读 · 0 评论 -
【剑指 Offer 24. 反转链表】
【剑指 Offer 24. 反转链表】题目描述:示例:解析思路:双指针(迭代)法代码(python3)代码(cpp)复杂度分析:递归法代码(python)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:示例1:输入: 1->2->3->4->5->原创 2021-12-20 18:58:27 · 245 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
【剑指 Offer 22. 链表中倒数第k个节点】题目描述:示例:解析思路:代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2原创 2021-12-16 23:00:16 · 784 阅读 · 0 评论 -
【剑指 Offer 18. 删除链表的节点】
【剑指 Offer 18. 删除链表的节点】题目描述:示例:解析思路:代码(python3)代码(cpp)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例:示例1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解原创 2021-12-16 22:04:02 · 137 阅读 · 0 评论 -
【剑指 Offer 17. 打印从1到最大的n位数】
【剑指 Offer 17. 打印从1到最大的n位数】题目描述:示例:不考虑数值越界:代码(python3)代码(c++)考虑数值越界:题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例:示例1:输入: n = 1原创 2021-12-15 20:20:00 · 862 阅读 · 0 评论 -
【剑指 Offer 15. 二进制中1的个数】
【剑指 Offer 15. 二进制中1的个数】题目描述:示例:解析思路:代码(python3)代码(c++)题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下原创 2021-12-15 12:30:06 · 146 阅读 · 0 评论 -
【剑指 Offer 11. 旋转数组的最小数字】
【剑指 Offer 11. 旋转数组的最小数字】题目描述:示例:解题思路:代码:c++python来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,原创 2021-12-08 11:38:33 · 684 阅读 · 0 评论 -
【剑指 Offer 10- II. 青蛙跳台阶问题】
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:...原创 2021-12-03 20:24:28 · 342 阅读 · 0 评论 -
【剑指 Offer 10- I. 斐波那契数列】
【剑指 Offer 10- I. 斐波那契数列】题目描述:示例:解题思路:动态规划代码题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:。F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.原创 2021-11-17 10:21:50 · 1563 阅读 · 0 评论 -
【剑指 Offer 09 用两个栈实现队列】
题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof要求:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )。示例 1:输入:["CQueue","appendTail",".原创 2021-11-04 21:45:00 · 184 阅读 · 0 评论 -
【剑指 Offer 06 从尾到头打印链表】
【剑指 Offer 06】从尾到头打印链表题目描述:示例:解析思路 1: 使用 栈 stack思路Ⅱ : 递归③: 反转题目描述:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例:示例1:输入:head = [1,3,2]输出:[2,3,1]提示:原创 2021-11-03 20:08:38 · 312 阅读 · 0 评论