- 博客(254)
- 收藏
- 关注
原创 105. 从前序与中序遍历序列构造二叉树(中等 二叉树 dfs 哈希表 二叉树)
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例 1:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]示例 2:输入: preorder = [-1], inorder = [-1]输出: [-1]提示:1 ...
2022-07-01 16:44:07
490
1
原创 98. 验证二叉搜索树(中等 二叉搜索树 dfs)
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。提示:树中节点数目范围在[1, 104] 内-231 ...
2022-07-01 08:04:41
276
原创 96. 不同的二叉搜索树(中等 二叉搜索树 动态规划)
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1
2022-06-30 21:11:24
278
原创 79. 单词搜索(中等 字符串 数组 矩阵 回溯)
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输出:true示例 2:输入:boar
2022-06-30 20:59:40
182
原创 76. 最小覆盖子串(困难 滑动窗口 哈希表 字符串)
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”示例 3:输入: s = “a”, t = “aa”输出
2022-06-23 20:56:27
103
原创 75. 颜色分类(中等 数组 双指针 排序)
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]提示:n == nums.length1 ...
2022-06-22 19:56:42
137
原创 32. 最长有效括号(困难 栈 字符串)
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0提示:0 ...
2022-06-19 15:43:21
226
原创 剑指 Offer II 067. 最大的异或(中等 前缀树 位运算 数组)
剑指 Offer II 067. 最大的异或给定一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。示例 1:输入:nums = [3,10,5,25,2,8]输出:28解释:最大运算结果是 5 XOR 25 = 28.示例 2:输入:nums = [0]输出:0示例 3:输入:nums = [2,4]输出:6示例 4:输入:nums = [8,10,2]输出:10示例 5:输入:nums = [1
2022-04-29 10:09:29
190
原创 剑指 Offer II 066. 单词之和(中等 前缀树 设计 字符串)
剑指 Offer II 066. 单词之和实现一个 MapSum 类,支持两个方法,insert 和 sum:MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。示例:输入:inputs =
2022-04-27 17:10:42
202
原创 剑指 Offer II 065. 最短的单词编码(中等 字典树 字符串 数组)
剑指 Offer II 065. 最短的单词编码单词数组 words 的 有效编码 由任意助记字符串 s 和下标数组 indices 组成,且满足:words.length == indices.length助记字符串 s 以 ‘#’ 字符结尾对于每个下标 indices[i] ,s 的一个从 indices[i] 开始、到下一个 ‘#’ 字符结束(但不包括 ‘#’)的 子字符串 恰好与 words[i] 相等给定一个单词数组 words ,返回成功对 words 进行编码的最小助记字符串 s 的
2022-04-27 16:08:19
279
原创 剑指 Offer II 064. 神奇的字典(中等 字典树 字符串 设计)
剑指 Offer II 064. 神奇的字典设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于已构建的神奇字典中。实现 MagicDictionary 类:MagicDictionary() 初始化对象void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同bool searc
2022-04-27 15:05:10
135
原创 剑指 Offer II 063. 替换单词(中等 前缀树 字符串)
剑指 Offer II 063. 替换单词在英语中,有一个叫做 词根(root) 的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。现在,给定一个由许多词根组成的词典和一个句子,需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。需要输出替换之后的句子。示例 1:输入:dictionary = [“cat”,“bat”
2022-04-27 10:29:12
190
原创 剑指 Offer II 062. 实现前缀树(中等 设计 字典树 前缀树 字符串)
剑指 Offer II 062. 实现前缀树Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false
2022-04-26 16:38:58
146
原创 剑指 Offer II 058. 日程表(中等 设计 线段树 TreeMap 有序集合)
剑指 Offer II 058. 日程表请实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排,则可以存储这个新的日程安排。MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end。当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产
2022-04-26 14:50:25
126
原创 剑指 Offer II 057. 值和下标之差都在给定的范围内(中等 数组 桶排序 滑动窗口 TreeSet)
剑指 Offer II 057. 值和下标之差都在给定的范围内请实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排,则可以存储这个新的日程安排。MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end。当两个日程安排有一些时间上的交叉时(例如两个日程安排都
2022-04-26 13:44:34
222
原创 剑指 Offer II 056. 二叉搜索树中两个节点之和(简单 二叉搜索树 dfs 哈希表 双指针 迭代器)
剑指 Offer II 056. 二叉搜索树中两个节点之和给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k 。假设二叉搜索树中节点的值均唯一。示例 1:输入: root = [8,6,10,5,7,9,11], k = 12输出: true解释: 节点 5 和节点 7 之和等于 12示例 2:输入: root = [8,6,10,5,7,9,11], k = 22输出: false解释: 不存在两个节点值之和为 22 的节
2022-04-12 18:06:32
105
原创 剑指 Offer II 055. 二叉搜索树迭代器(中等 二叉搜索树 迭代器)
剑指 Offer II 055. 二叉搜索树迭代器实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。int
2022-04-12 16:49:22
214
原创 剑指 Offer II 054. 所有大于等于节点的值之和(中等 二叉搜索树 dfs)
剑指 Offer II 054. 所有大于等于节点的值之和给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。示例 1:输入:root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:[30,36,21,36,35,26,15,null,null,
2022-04-10 15:40:13
85
原创 剑指 Offer II 053. 二叉搜索树中的中序后继(中等 二叉搜索树 dfs)
剑指 Offer II 053. 二叉搜索树中的中序后继给定一棵二叉搜索树和其中的一个节点 p ,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null 。节点 p 的后继是值比 p.val 大的节点中键值最小的节点,即按中序遍历的顺序节点 p 的下一个节点。示例 1:输入:root = [2,1,3], p = 1输出:2解释:这里 1 的中序后继是 2。请注意 p 和返回值都应是 TreeNode 类型。示例 2:输入:root = [5,3,6,2,4,null,nul
2022-04-10 15:31:56
177
原创 剑指 Offer II 052. 展平二叉搜索树(简单 二叉搜索树 dfs)
剑指 Offer II 052. 展平二叉搜索树给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]示例 2:输入:root = [5,1,7]输出:[1,null,
2022-04-10 13:52:13
125
原创 剑指 Offer II 051. 节点之和最大的路径(困难 dfs 树)
剑指 Offer II 051. 节点之和最大的路径路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给定一个二叉树的根节点 root ,返回其 最大路径和,即所有路径上节点值之和的最大值。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例
2022-04-10 13:44:55
84
原创 780. 到达终点(困难 数学)
780. 到达终点给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。示例 1:输入: sx = 1, sy = 1, tx = 3, ty = 5输出: true解释:可以通过以下一系列转换从起点转换到终点:(1, 1) -> (1, 2)(1, 2) -> (3, 2)(3, 2) -
2022-04-09 09:21:08
183
原创 796. 旋转字符串(简单 字符串 字符串匹配)
796. 旋转字符串给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。例如, 若 s = ‘abcde’,在旋转一次之后结果就是’bcdea’ 。示例 1:输入: s = “abcde”, goal = “cdeab”输出: true示例 2:输入: s = “abcde”, goal = “abced”输出: false提示:1 <= s.length, goal.
2022-04-07 08:51:39
190
原创 310. 最小高度树(中等 拓扑排序 bfs dfs 树形dp)
310. 最小高度树树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h)
2022-04-06 09:28:28
296
原创 954. 二倍数对数组(中等 数组 哈希表 排序)
954. 二倍数对数组给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * arr[2 * i]” 时,返回 true;否则,返回 false。示例 1:输入:arr = [3,1,3,6]输出:false示例 2:输入:arr = [2,1,2,6]输出:false示例 3:输入:arr = [4,-2,2,-4]输出:true解释:可以用 [-2,
2022-04-01 09:21:08
136
原创 剑指 Offer II 050. 向下的路径节点之和(中等 二叉树 dfs 哈希表)
剑指 Offer II 050. 向下的路径节点之和给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。示例 2:输入:root
2022-03-31 20:40:28
95
原创 剑指 Offer II 012. 左右两边子数组的和相等(简单 数组 前缀和)
剑指 Offer II 012. 左右两边子数组的和相等给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1,7,3,6,5,6]输出:3解释:中心下标是
2022-03-31 17:08:21
105
原创 1606. 找到处理最多请求的服务器(困难 数组 优先队列 有序集合)
1606. 找到处理最多请求的服务器你有 k 个服务器,编号为 0 到 k-1 ,它们可以同时处理多个请求组。每个服务器有无穷的计算能力但是 不能同时处理超过一个请求 。请求分配到服务器的规则如下:第 i (序号从 0 开始)个请求到达。如果所有服务器都已被占据,那么该请求被舍弃(完全不处理)。如果第 (i % k) 个服务器空闲,那么对应服务器会处理该请求。否则,将请求安排给下一个空闲的服务器(服务器构成一个环,必要的话可能从第 0 个服务器开始继续找下一个空闲的服务器)。比方说,如果第 i 个
2022-03-30 09:11:26
215
原创 剑指 Offer II 009. 乘积小于 K 的子数组(中等 数组 滑动窗口)
剑指 Offer II 009. 乘积小于 K 的子数组给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k
2022-03-29 13:22:12
618
原创 剑指 Offer II 008. 和大于等于 target 的最短子数组(中等 数组 滑动窗口)
剑指 Offer II 008. 和大于等于 target 的最短子数组给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:targ
2022-03-29 13:07:46
70
原创 剑指 Offer II 007. 数组中和为 0 的三个数(中等 数组 双指针 排序)
剑指 Offer II 007. 数组中和为 0 的三个数给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <=
2022-03-29 13:05:50
70
原创 2024. 考试的最大困扰度(中等 字符串 滑动窗口)
2024. 考试的最大困扰度一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为 ‘T’ 或者
2022-03-29 09:12:09
575
原创 693. 交替位二进制数(简单 数学)
693. 交替位二进制数给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例 1:输入:n = 5输出:true解释:5 的二进制表示是:101示例 2:输入:n = 7输出:false解释:7 的二进制表示是:111.示例 3:输入:n = 11输出:false解释:11 的二进制表示是:1011.提示:1 <= n <= 231 - 1来源:力扣(LeetCode)链接:https://leet
2022-03-28 09:53:27
86
原创 剑指 Offer II 119. 最长连续序列(中等 图 并查集 bfs)
剑指 Offer II 119. 最长连续序列给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:0 <= nums.length <= 104-109 <= nums[i] <= 109进
2022-03-27 20:27:34
594
原创 剑指 Offer II 118. 多余的边(中等 并查集 图)
剑指 Offer II 118. 多余的边树可以看成是一个连通且 无环 的 无向 图。给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在 ai 和 bi 之间存在一条边。请找出一条可以删去的边,删除后可使得剩余部分是一个有着 n 个节点的树。如果有多个答案,则返回数组 edges 中最后出现的边。示例
2022-03-27 19:45:33
260
原创 剑指 Offer II 117. 相似的字符串(困难 图 并查集)
剑指 Offer II 117. 相似的字符串如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不与 “tars”,“rats”,或 “arts” 相似。总之,它们通过相似性形成了两个关联组:{“tars”, “rats”, “arts”} 和 {“star
2022-03-27 11:11:13
102
原创 2028. 找出缺失的观测数据(中等 数学 数组 模拟)
2028. 找出缺失的观测数据现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n + m 次投掷数据的 平均值 。给你一个长度为 m 的整数数组 rolls ,其中 rolls[i] 是第 i 次观测的值。同时给你两个整数 mean 和 n 。返回一个长度为 n 的数组,包含所有缺失的观测数据,且满足这 n + m 次投掷的 平均值 是 mean 。如果存在多组符合要求的答案
2022-03-27 10:11:42
123
原创 剑指 Offer II 116. 省份数量/朋友圈(中等 图 bfs 并查集)
剑指 Offer II 116. 省份数量有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。
2022-03-26 20:43:52
1006
原创 剑指 Offer II 115. 重建序列(中等 图 bfs 数组 拓扑排序)
剑指 Offer II 115. 重建序列请判断原始的序列 org 是否可以从序列集 seqs 中唯一地 重建 。序列 org 是 1 到 n 整数的排列,其中 1 ≤ n ≤ 104。重建 是指在序列集 seqs 中构建最短的公共超序列,即 seqs 中的任意序列都是该最短序列的子序列。示例 1:输入: org = [1,2,3], seqs = [[1,2],[1,3]]输出: false解释:[1,2,3] 不是可以被重建的唯一的序列,因为 [1,3,2] 也是一个合法的序列。示例 2
2022-03-26 19:33:43
552
原创 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)
剑指 Offer II 114. 外星文字典现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回 “” 。若存在多种可能的合法字母顺序,返回其中 任意一种 顺序即可。字符串 s 字典顺序小于 字符串 t 有两种情况:在第一个不同字母处,如果 s 中的字母在这门外星语言的字
2022-03-25 15:52:00
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人