Jerring


  • 首页

  • 标签

  • 分类

  • 归档

LeetCode450-删除二叉搜索树中的节点

发表于 2019-07-12 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/delete-node-in-a-bst/

中文链接:https://leetcode-cn.com/problems/delete-node-in-a-bst/

题目详述

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。

一般来说,删除节点可分为两个步骤:

  1. 首先找到需要删除的节点;
  2. 如果找到了,删除它。

说明: 要求算法时间复杂度为 O(h),h 为树的高度。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root = [5,3,6,2,4,null,7]
key = 3

5
/ \
3 6
/ \ \
2 4 7

给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。

一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。

5
/ \
4 6
/ \
2 7

另一个正确答案是 [5,2,6,null,4,null,7]。

5
/ \
2 6
\ \
4 7
阅读全文 »

LeetCode1111-有效括号的嵌套深度

发表于 2019-07-11 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/

中文链接:https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/

题目详述

有效括号字符串 仅由 “(“ 和 “)” 构成,并符合下述几个条件之一:

  • 空字符串
  • 连接,可以记作 AB(A 与 B 连接),其中 A 和 B 都是有效括号字符串
  • 嵌套,可以记作 (A),其中 A 是有效括号字符串

类似地,我们可以定义任意有效括号字符串 s 的 嵌套深度 depth(S):

  • s 为空时,depth(“”) = 0
  • s 为 A 与 B 连接时,depth(A + B) = max(depth(A), depth(B)),其中 A 和 B 都是有效括号字符串
  • s 为嵌套情况,depth(“(“ + A + “)”) = 1 + depth(A),其中 A 是有效括号字符串

例如:””,”()()”,和 “()(()())” 都是有效括号字符串,嵌套深度分别为 0,1,2,而 “)(“ 和 “(()” 都不是有效括号字符串。

给你一个有效括号字符串 seq,将其分成两个不相交的子序列 A 和 B,且 A 和 B 满足有效括号字符串的定义(注意:A.length + B.length = seq.length)。

现在,你需要从中选出 任意 一组有效括号字符串 A 和 B,使 max(depth(A), depth(B)) 的可能取值最小。

返回长度为 seq.length 答案数组 answer ,选择 A 还是 B 的编码规则是:如果 seq[i] 是 A 的一部分,那么 answer[i] = 0。否则,answer[i] = 1。即便有多个满足要求的答案存在,你也只需返回 一个。

示例 1:

1
2
输入:seq = "(()())"
输出:[0,1,1,1,1,0]

示例 2:

1
2
输入:seq = "()(())()"
输出:[0,0,0,1,1,0,1,1]

提示:

  • 1 <= text.size <= 10000
阅读全文 »

LeetCode1110-删点成林

发表于 2019-07-11 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/delete-nodes-and-return-forest/

中文链接:https://leetcode-cn.com/problems/delete-nodes-and-return-forest/

题目详述

给出二叉树的根节点 root,树上每个节点都有一个不同的值。

如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。

返回森林中的每棵树。你可以按任意顺序组织答案。

示例:

1
2
输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]
输出:[[1,2,null,4],[6],[7]]

提示:

  • 树中的节点数最大为 1000。
  • 每个节点都有一个介于 1 到 1000 之间的值,且各不相同。
  • to_delete.length <= 1000
  • to_delete 包含一些从 1 到 1000、各不相同的值。
阅读全文 »

LeetCode1109-航班预订统计

发表于 2019-07-11 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/corporate-flight-bookings/

中文链接:https://leetcode-cn.com/problems/corporate-flight-bookings/

题目详述

这里有 n 个航班,它们分别从 1 到 n 进行编号。

我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 k 个座位。

请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。

示例:

1
2
输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
输出:[10,55,45,25,25]

提示:

  • 1 <= bookings.length <= 20000
  • 1 <= bookings[i][0] <= bookings[i][1] <= n <= 20000
  • 1 <= bookings[i][2] <= 10000
阅读全文 »

LeetCode1108-IP地址无效化

发表于 2019-07-11 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/defanging-an-ip-address/

中文链接:https://leetcode-cn.com/problems/defanging-an-ip-address/

题目详述

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。

所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。

示例 1:

1
2
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"

示例 2:

1
2
输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"

提示:

给出的 address 是一个有效的 IPv4 地址

阅读全文 »

LeetCode29-两数相除

发表于 2019-07-10 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/divide-two-integers/

中文链接:https://leetcode-cn.com/problems/divide-two-integers/

题目详述

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

返回被除数 dividend 除以除数 divisor 得到的商。

示例 1:

1
2
输入: dividend = 10, divisor = 3
输出: 3

示例 2:

1
2
输入: dividend = 7, divisor = -3
输出: -2

说明:

  • 被除数和除数均为 32 位有符号整数。
  • 除数不为 0。
  • 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 1。
阅读全文 »

LeetCode13-罗马数字转整数

发表于 2019-07-10 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/pascals-triangle-ii/

中文链接:https://leetcode-cn.com/problems/pascals-triangle-ii/

题目详述

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

1
2
输入: 3
输出: [1,3,3,1]

进阶:

你可以优化你的算法到 O(k) 空间复杂度吗?

阅读全文 »

LeetCode13-罗马数字转整数

发表于 2019-07-10 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/roman-to-integer/

中文链接:https://leetcode-cn.com/problems/roman-to-integer/

题目详述

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值

1
2
3
4
5
6
7
I             1
V 5
X 10
L 50
C 100
D 500
M 1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

示例 1:

1
2
输入: "III"
输出: 3

示例 2:

1
2
输入: "IV"
输出: 4

示例 3:

1
2
输入: "IX"
输出: 9

示例 4:

1
2
3
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.

示例 5:

1
2
3
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
阅读全文 »

LeetCode133-克隆图

发表于 2019-07-10 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/clone-graph/

中文链接:https://leetcode-cn.com/problems/clone-graph/

题目详述

给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。

示例:

1
2
3
4
5
6
7
8
输入:
{"$id":"1","neighbors":[{"$id":"2","neighbors":[{"$ref":"1"},{"$id":"3","neighbors":[{"$ref":"2"},{"$id":"4","neighbors":[{"$ref":"3"},{"$ref":"1"}],"val":4}],"val":3}],"val":2},{"$ref":"4"}],"val":1}

解释:
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3 。

提示:

  1. 节点数介于 1 到 100 之间。
  2. 无向图是一个简单图,这意味着图中没有重复的边,也没有自环。
  3. 由于图是无向的,如果节点 p 是节点 q 的邻居,那么节点 q 也必须是节点 p 的邻居。
  4. 必须将给定节点的拷贝作为对克隆图的引用返回。
阅读全文 »

LeetCode485-最大连续1的个数

发表于 2019-07-10 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/max-consecutive-ones/

中文链接:https://leetcode-cn.com/problems/max-consecutive-ones/

题目详述

给定一个二进制数组, 计算其中最大连续1的个数。

示例 1:

1
2
3
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.

注意:

  • 输入的数组只包含 0 和1。
  • 输入数组的长度是正整数,且不超过 10,000。
阅读全文 »
1…91011…47
Jerring

Jerring

Talk is cheap, show me the code.

462 日志
4 分类
24 标签
© 2019 Jerring
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4