剑指 Offer
cluse_ld
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 68 - II. 二叉树的最近公共祖先
剑指 Offer 68 - II. 二叉树的最近公共祖先原创 2022-08-19 21:38:30 · 132 阅读 · 0 评论 -
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先原创 2022-08-19 21:01:47 · 76 阅读 · 0 评论 -
剑指 Offer 66. 构建乘积数组
剑指 Offer 66. 构建乘积数组原创 2022-08-18 22:39:08 · 100 阅读 · 0 评论 -
剑指 Offer 65. 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法原创 2022-08-18 21:30:18 · 210 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n原创 2022-08-18 21:11:44 · 101 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润
在这里插入图片描述原创 2022-08-18 20:48:57 · 98 阅读 · 0 评论 -
剑指 Offer 61. 扑克牌中的顺子
剑指 Offer 61. 扑克牌中的顺子原创 2022-08-17 21:05:08 · 85 阅读 · 0 评论 -
剑指 Offer 59 - I. 滑动窗口的最大值
剑指 Offer 59 - I. 滑动窗口的最大值原创 2022-08-14 21:26:03 · 79 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序
剑指 Offer 58 - I. 翻转单词顺序原创 2022-08-13 22:36:19 · 46 阅读 · 0 评论 -
剑指 Offer 57 - II. 和为s的连续正数序列
剑指 Offer 57 - II. 和为s的连续正数序列原创 2022-08-13 22:13:25 · 78 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字
剑指 Offer 57. 和为s的两个数字原创 2022-08-13 21:06:41 · 97 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
剑指 Offer 56 - I. 数组中数字出现的次数原创 2022-08-12 21:45:39 · 84 阅读 · 0 评论 -
剑指 Offer 55 - II. 平衡二叉树
剑指 Offer 55 - II. 平衡二叉树原创 2022-08-11 22:32:58 · 138 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度
剑指 Offer 55 - I. 二叉树的深度原创 2022-08-11 22:12:04 · 80 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点
剑指 Offer 54. 二叉搜索树的第k大节点原创 2022-08-11 22:03:55 · 77 阅读 · 0 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字原创 2022-08-11 21:55:04 · 53 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
剑指 Offer 53 - I. 在排序数组中查找数字 I原创 2022-08-11 21:33:40 · 54 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点原创 2022-08-11 21:11:20 · 64 阅读 · 0 评论 -
剑指 Offer 51. 数组中的逆序对
剑指 Offer 51. 数组中的逆序对原创 2022-08-10 22:57:59 · 101 阅读 · 0 评论 -
剑指 Offer 49. 丑数
剑指offer 49.丑数原创 2022-08-09 21:42:34 · 85 阅读 · 0 评论 -
剑指 Offer 48. 最长不含重复字符的子字符串
大致思路:动态规划。用HashMap存储每个字符上次出现的index。遍历s的每一个字符,从map中获取当前字符上次出现的n,若没出现过则返回-1。更新当前字符对应的索引。当前索引i,若 i - n count 说明当前未出现重复或重复不是由当前字符引起,直接计数,进入下一轮遍历。...原创 2022-08-08 22:31:48 · 81 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值
由于 dp[i][j]dp[i][j] 只与 dp[i-1][j]dp[i−1][j] , dp[i][j-1]dp[i][j−1] , grid[i][j]grid[i][j] 有关系,因此可以将原矩阵 grid 用作 dp 矩阵,即直接在 grid 上修改即可。遍历矩阵,将每个位置对应的最大价值算出来,右下角的值就是结果。大致思路:动态规划,由题意,只考虑向右或者向下移动,所以每个dp[i][j]的值等于它左右两数中大的那个加上grid[i][j]的和。...原创 2022-08-08 21:46:47 · 78 阅读 · 0 评论 -
剑指 Offer 46. 把数字翻译成字符串
大致思路:动态规划法,dp数组中存放以第i个数字结尾的数能翻译成的字符串的个数。据分析,每加入一个数字,至少最后一个数字自己可以变成一个字母。还有一种就是加入的数字和前一个数字形成一个两位数的字母。所以我们只需要判断最后两位是否能形成字母就可以知道会有多少中方案:若最后两个可以形成字母,那么总数等于dp[i] = dp[i-2] + dp[i-1]。若不能,那么dp[i] = dp[i-1]。而我们发现dp数组中,只需要记录i的前两位数就行,所以我们只用两个数字来代替dp数组。...原创 2022-08-08 21:26:07 · 82 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数
大致思路:变式排序,由题意可知要求的是大数在后面,小数在前面。str1 + str2 > str2 + str1,那么str1就应该是大的那个数,就应该放在后面。采用快排,最后用StringBuffer存储结果。原创 2022-08-08 12:41:35 · 56 阅读 · 0 评论 -
剑指 Offer 44. 数字序列中某一位的数字
大致思路为:①先找出n的位数digit,开始的整十整百的数start,以该start为起点的digit位数的位数总共有count位。②找出n对应的数num③找出n对应num的第几位,得出结果。原创 2022-08-07 22:21:55 · 61 阅读 · 0 评论 -
剑指 Offer 43. 1~n 整数中 1 出现的次数
大致思路为:遍历n的每一位数,统计每一位出现1的次数并求和。原创 2022-08-07 21:44:52 · 52 阅读 · 0 评论 -
剑指 Offer 19. 正则表达式匹配
剑指 Offer 19. 正则表达式匹配。原创 2022-08-07 21:10:22 · 67 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
大致思路:动态规划,dp[i]表示以nums[i]结尾的子数组最大和,dp[i] += Math.max(dp[i-1],0) 用res记录最终结果,初始化为dp[1],res = Math.max(res,nums[i]),记录最大值即可。原创 2022-08-06 22:11:44 · 54 阅读 · 0 评论 -
剑指 Offer 41. 数据流中的中位数
大致思路为:建两个堆对元素进行存储,一个小顶堆A,存储较大的一半元素(若总数为奇数,则是多的那一半);大顶堆B,存储较大的一半元素(若总数为奇数,则是少的那一半)。若总数为偶数:添加元素时,将元素添加到B,再将B的根弹出,添加到A。中间值为AB根平均数;若总数为奇数:添加元素时:将元素添加到A,再将A的根添加到B。...原创 2022-08-06 21:38:05 · 60 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
大致思路:变式快排,不需要保证顺序,只需要保证k个数都小于中间值。只要当某轮递归基准值坐标为k,返回前k个即可。原创 2022-08-04 22:25:56 · 57 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
对于数组中的数,是众数的投1票,不是众数的投-1票。每当和为0时,将下一个数记为众数,进行求和。首先开始时和为0,所有将第一个数记为众数。由于数组中众数个数超一半,所有若和在某个数时变成0,那么剩下的数的众数还是最终的众数,不影响最终的结果。基本思路:摩尔投票法。...原创 2022-08-04 21:48:54 · 48 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列
字符顺序的变换规则为:深度优先遍历,对数组的每一位进行固定,第一位能固定的值有n个。通过for循环将每一位都固定在第一位一次。当重复时跳过该轮固定。固定的方法为将该位置的字符与深度遍历第x层的x为进行交换,交换之后继续深度优先遍历第x+1层。当该次固定的深度优先遍历完成后,将原来发生的交换复原,然后进行该层的下一次固定。大致思路为:先由字符串生成一个字符数组,对数组中的字符顺序进行变换,当得到新的排序时就将该数组生成一个字符串,加入到结果集合中。...原创 2022-08-04 21:31:56 · 105 阅读 · 0 评论 -
剑指 Offer 37. 序列化二叉树
基本思路为:通过Queue实现层次遍历,将遍历的节点的val用StringBuffer储存起来,null用null代替。中间用","连接,最后用"[]'括起来,返回对应字符串,实现序列化。反序列化相反,用Queue实现层次遍历。将字符串外面的括号去掉,然后通过","split成一个字符串数组。每遍历一个节点,进行判断,若数组中的下一个字符串不为"null",就把该字符串封装成对应的TreeNode节点,赋值给left节点,并将数组指针向后移一位。同理对right节点做相同操作,最终实现反序列化。...原创 2022-08-02 23:14:47 · 111 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表
大致思路为:定义head与pre节点。对二叉搜索树进行中序遍历,遍历每一个节点的逻辑是若root.left为空且head为空,则将root赋值给head与pre;否则执行一般逻辑–将pre与root建立双向链表结构,最后把root赋值给pre。当遍历完最后一个节点时,pre指向最后一个节点。最后再把head与pre直接建立双向链表结构,返回head即可。...原创 2022-08-01 23:07:57 · 79 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
大致思路是先遍历一遍旧链表,建立一个map存储旧链表节点与新链表节点的映射。,并将n2赋值给n1的random指针;第二次遍历旧链表,通过map找出。原创 2022-08-01 22:23:55 · 96 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
基本思路为深度优先遍历二叉树,用tmp链表记录每个遍历的节点,sum记录节点值的和。当sum等于target的时候且为叶子结点的时候,用LinkedList的构造器将tmp拷贝到一个新的链表中,并加入到res列表中。遍历完成后返回res即可。...原创 2022-08-01 21:36:52 · 114 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列原创 2022-07-30 22:43:27 · 102 阅读 · 0 评论 -
剑指 Offer 32 - III. 从上到下打印二叉树 III
剑指 Offer 32 - III. 从上到下打印二叉树 III原创 2022-07-30 22:07:22 · 99 阅读 · 0 评论 -
剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - II. 从上到下打印二叉树 II原创 2022-07-30 21:33:57 · 56 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - I. 从上到下打印二叉树原创 2022-07-30 21:14:18 · 93 阅读 · 0 评论