Jerring


  • 首页

  • 标签

  • 分类

  • 归档

LeetCode1137-第N个泰波那契数

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

题目链接

英文链接:https://leetcode.com/problems/n-th-tribonacci-number/

中文链接:https://leetcode-cn.com/problems/n-th-tribonacci-number/

题目详述

泰波那契序列 Tn 定义如下:

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

示例 1:

1
2
3
4
5
输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2:

1
2
输入:n = 25
输出:1389537

提示:

  • 0 <= n <= 37
  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1。
阅读全文 »

LeetCode273-整数转换英文表示

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

题目链接

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

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

题目详述

将非负整数转换为其对应的英文表示。可以保证给定输入小于 2^31 - 1 。

示例 1:

1
2
输入: 123
输出: "One Hundred Twenty Three"

示例 2:

1
2
输入: 12345
输出: "Twelve Thousand Three Hundred Forty Five"

示例 3:

1
2
输入: 1234567
输出: "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:

1
2
输入: 1234567891
输出: "One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"
阅读全文 »

LeetCode929-独特的电子邮件地址

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

题目链接

英文链接:https://leetcode.com/problems/unique-email-addresses/

中文链接:https://leetcode-cn.com/problems/unique-email-addresses/

题目详述

每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。

例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。

除了小写字母,这些电子邮件还可能包含 ‘.’ 或 ‘+’。

如果在电子邮件地址的本地名称部分中的某些字符之间添加句点(’.’),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,”alice.z@leetcode.com” 和 “alicez@leetcode.com” 会转发到同一电子邮件地址。 (请注意,此规则不适用于域名。)

如果在本地名称中添加加号(’+’),则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件,例如 m.y+name@email.com 将转发到 my@email.com。 (同样,此规则不适用于域名。)

可以同时使用这两个规则。

给定电子邮件列表 emails,我们会向列表中的每个地址发送一封电子邮件。实际收到邮件的不同地址有多少?

示例:

1
2
3
输入:["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]
输出:2
解释:实际收到邮件的是 "testemail@leetcode.com" 和 "testemail@lee.tcode.com"。

提示:

  • 1 <= emails[i].length <= 100
  • 1 <= emails.length <= 100
  • 每封 emails[i] 都包含有且仅有一个 ‘@’ 字符。
阅读全文 »

LeetCode1049-最后一块石头的重量II

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

题目链接

英文链接:https://leetcode.com/problems/last-stone-weight-ii/

中文链接:https://leetcode-cn.com/problems/last-stone-weight-ii/

题目详述

有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。

示例:

1
2
3
4
5
6
7
输入:[2,7,4,1,8,1]
输出:1
解释:
组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。

提示:

  1. 1 <= stones.length <= 30
  2. 1 <= stones[i] <= 1000
阅读全文 »

a

发表于 2019-07-28 | 分类于 Data Structures and Algorithms

01 背包

有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。

定义一个二维数组 dp 存储最大价值,其中 dp[i][j] 表示前 i 件物品体积不超过 j 的情况下能达到的最大价值。设第 i 件物品体积为 w,价值为 v,根据第 i 件物品是否添加到背包中,可以分两种情况讨论:

  • 第 i 件物品没添加到背包,总体积不超过 j 的前 i 件物品的最大价值就是总体积不超过 j 的前 i-1 件物品的最大价值,dp[i][j] = dp[i-1][j]。
  • 第 i 件物品添加到背包中,dp[i][j] = dp[i-1][j-w] + v。

第 i 件物品可添加也可以不添加,取决于哪种情况下最大价值更大。因此,0-1 背包的状态转移方程为:

img

阅读全文 »

LeetCode1048-最长字符串链

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

题目链接

英文链接:https://leetcode.com/problems/longest-string-chain/

中文链接:https://leetcode-cn.com/problems/longest-string-chain/

题目详述

给出一个单词列表,其中每个单词都由小写英文字母组成。

如果我们可以在 word1 的任何地方添加一个字母使其变成 word2,那么我们认为 word1 是 word2 的前身。例如,”abc” 是 “abac” 的前身。

词链是单词 [word_1, word_2, …, word_k] 组成的序列,k >= 1,其中 word_1 是 word_2 的前身,word_2 是 word_3 的前身,依此类推。

从给定单词列表 words 中选择单词组成词链,返回词链的最长可能长度。

示例:

1
2
3
输入:["a","b","ba","bca","bda","bdca"]
输出:4
解释:最长单词链之一为 "a","ba","bda","bdca"。

提示:

  1. 1 <= words.length <= 1000
  2. 1 <= words[i].length <= 16
  3. words[i] 仅由小写英文字母组成。
阅读全文 »

LeetCode856-括号的分数

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

题目链接

英文链接:https://leetcode.com/problems/score-of-parentheses/

中文链接:https://leetcode-cn.com/problems/score-of-parentheses/

题目详述

给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:

  • () 得 1 分。
  • AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。
  • (A) 得 2 * A 分,其中 A 是平衡括号字符串。

示例 1:

1
2
输入: "()"
输出: 1

示例 2:

1
2
输入: "(())"
输出: 2

示例 3:

1
2
输入: "()()"
输出: 2

示例 4:

1
2
输入: "(()(()))"
输出: 6

提示:

  1. S 是平衡括号字符串,且只含有 ( 和 ) 。
  2. 2 <= S.length <= 50
阅读全文 »

LeetCode1047-删除字符串中的所有相邻重复项

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

题目链接

英文链接:https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string/

中文链接:https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/

题目详述

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

1
2
3
4
输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

  1. 1 <= S.length <= 20000
  2. S 仅由小写英文字母组成。
阅读全文 »

LeetCode1046-最后一块石头的重量

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

题目链接

英文链接:https://leetcode.com/problems/last-stone-weight/

中文链接:https://leetcode-cn.com/problems/last-stone-weight/

题目详述

有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

  • 如果 x == y,那么两块石头都会被完全粉碎;
  • 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。

最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。

提示:

  1. 1 <= stones.length <= 30
  2. 1 <= stones[i] <= 1000
阅读全文 »

LeetCode1128-等价多米诺骨牌对的数量

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

题目链接

英文链接:https://leetcode.com/problems/number-of-equivalent-domino-pairs/

中文链接:https://leetcode-cn.com/problems/number-of-equivalent-domino-pairs/

题目详述

给你一个由一些多米诺骨牌组成的列表 dominoes。

如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。

形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a==c 且 b==d,或是 a==d 且 b==c。

在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的数量。

示例:

1
2
输入:dominoes = [[1,2],[2,1],[3,4],[5,6]]
输出:1

提示:

  • 1 <= dominoes.length <= 40000
  • 1 <= dominoes[i][j] <= 9
阅读全文 »
1…567…47
Jerring

Jerring

Talk is cheap, show me the code.

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