Jerring


  • 首页

  • 标签

  • 分类

  • 归档

LeetCode1033-移动石头直到连续

发表于 2019-06-18 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/moving-stones-until-consecutive/

中文链接:https://leetcode-cn.com/problems/moving-stones-until-consecutive/

题目详述

三枚石子放置在数轴上,位置分别为 a,b,c。

每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。

当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。

要使游戏结束,你可以执行的最小和最大移动次数分别是多少? 以长度为 2 的数组形式返回答案:answer = [minimum_moves, maximum_moves]

示例 1:

1
2
3
输入:a = 1, b = 2, c = 5
输出:[1, 2]
解释:将石子从 5 移动到 4 再移动到 3,或者我们可以直接将石子移动到 3。

示例 2:

1
2
3
输入:a = 4, b = 3, c = 2
输出:[0, 0]
解释:我们无法进行任何移动。

提示:

  1. 1 <= a <= 100
  2. 1 <= b <= 100
  3. 1 <= c <= 100
  4. a != b, b != c, c != a
阅读全文 »

LeetCode319-灯泡开关

发表于 2019-06-17 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/bulb-switcher/

中文链接:https://leetcode-cn.com/problems/bulb-switcher/

题目详述

初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。

示例:

1
2
3
4
5
6
7
8
9
输入: 3
输出: 1
解释:
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].

你应该返回 1,因为只有一个灯泡还亮着。
阅读全文 »

LeetCode5-最长回文子串

发表于 2019-06-16 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/longest-palindromic-substring/

中文链接:https://leetcode-cn.com/problems/longest-palindromic-substring/

题目详述

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

1
2
3
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

1
2
输入: "cbbd"
输出: "bb"
阅读全文 »

LeetCode43-字符串相乘

发表于 2019-06-16 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/multiply-strings/

中文链接:https://leetcode-cn.com/problems/multiply-strings/

题目详述

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

1
2
输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

1
2
输入: num1 = "123", num2 = "456"
输出: "56088"

说明:

  1. num1 和 num2 的长度小于110。
  2. num1 和 num2 只包含数字 0-9。
  3. num1 和 num2 均不以零开头,除非是数字 0 本身。
  4. 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
阅读全文 »

LeetCode6-Z字形变换

发表于 2019-06-16 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/zigzag-conversion/

中文链接:https://leetcode-cn.com/problems/zigzag-conversion/

题目详述

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:

1
2
3
L   C   I   R
E T O E S I I G
E D H N

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”LCIRETOESIIGEDHN”。

请你实现这个将字符串进行指定行数变换的函数:

1
string convert(string s, int numRows);

示例 1:

1
2
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"

示例 2:

1
2
3
4
5
6
7
8
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:

L D R
E O E I I
E C I H N
T S G
阅读全文 »

LeetCode14-最长公共前缀

发表于 2019-06-16 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/longest-common-prefix/

中文链接:https://leetcode-cn.com/problems/longest-common-prefix/

题目详述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

1
2
输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

1
2
3
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

阅读全文 »

LeetCode606-根据二叉树创建字符串

发表于 2019-06-15 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/construct-string-from-binary-tree/

中文链接:https://leetcode-cn.com/problems/construct-string-from-binary-tree/

题目详述

你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。

空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

示例 1:

1
2
3
4
5
6
7
8
9
10
11
12
输入: 二叉树: [1,2,3,4]
1
/ \
2 3
/
4

输出: "1(2(4))(3)"

解释: 原本将是“1(2(4)())(3())”,
在你省略所有不必要的空括号对之后,
它将是“1(2(4))(3)”。

示例 2:

1
2
3
4
5
6
7
8
9
10
11
输入: 二叉树: [1,2,3,null,4]
1
/ \
2 3
\
4

输出: "1(2()(4))(3)"

解释: 和第一个示例相似,
除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。
阅读全文 »

LeetCode331-验证二叉树的前序序列化

发表于 2019-06-15 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/find-duplicate-subtrees/

中文链接:https://leetcode-cn.com/problems/find-duplicate-subtrees/

题目详述

序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。

 _9_
/   \

3 2
/ \ / \
4 1 # 6
/ \ / \ / \

#

例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。

给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。

每个以逗号分隔的字符或为一个整数或为一个表示 null 指针的 ‘#’ 。

你可以认为输入格式总是有效的,例如它永远不会包含两个连续的逗号,比如 “1,,3” 。

示例 1:

1
2
输入: "9,3,4,#,#,1,#,#,2,#,6,#,#"
输出: true

示例 2:

1
2
输入: "1,#"
输出: false

示例 3:

1
2
输入: "9,#,#,1"
输出: false
阅读全文 »

LeetCode652-寻找重复的子树

发表于 2019-06-15 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/find-duplicate-subtrees/

中文链接:https://leetcode-cn.com/problems/find-duplicate-subtrees/

题目详述

给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。

两棵树重复是指它们具有相同的结构以及相同的结点值。

示例 1:

    1
   / \
  2   3
 /   / \
4   2   4
   /
  4

下面是两个重复的子树:

  2
 /
4

和

4

因此,你需要以列表的形式返回上述重复子树的根结点。

阅读全文 »

LeetCode687-最长同值路径

发表于 2019-06-15 | 分类于 LeetCode

题目链接

英文链接:https://leetcode.com/problems/longest-univalue-path/

中文链接:https://leetcode-cn.com/problems/longest-univalue-path/

题目详述

给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。

注意:两个节点之间的路径长度由它们之间的边数表示。

示例 1:

输入:

    5
   / \
  4   5
 / \   \
1   1   5

输出:

2
示例 2:

输入:

    1
   / \
  4   5
 / \   \
4   4   5

输出:

2
注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。

阅读全文 »
1…171819…47
Jerring

Jerring

Talk is cheap, show me the code.

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