Skip to content

Latest commit

 

History

History
146 lines (108 loc) · 2.96 KB

File metadata and controls

146 lines (108 loc) · 2.96 KB

算法

1. 跳跃游戏

  • 给定一个非负整数数组,你最初位于数组的第一个位置。
  • 数组中的每个元素代表你在该位置可以跳跃的最大长度。
  • 判断你是否能够到达最后一个位置。

示例 1:

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

输出: 
true

解释: 
我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

示例 2:

输入: 
[3,2,1,0,4]

输出: 
false

解释: 
无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

2. 判断子序列

给定字符串 st ,判断 s 是否为 t 的子序列。

你可以认为 st 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:

输入:
s = "abc", 
t = "ahbgdc"

输出:
true

示例 2:

输入:
s = "axc", 
t = "ahbgdc"

输出:
false

3. 使括号有效的最少添加

给定一个由 '('')' 括号组成的字符串 S,我们需要添加最少的括号,'(' 或是 ')',可以在任何位置。以使得到的括号字符串有效。

从形式上讲,只有满足下面几点之一,括号字符串才是有效的:

  • 它是一个空字符串,或者
  • 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
  • 它可以被写作 (A),其中 A 是有效字符串。
  • 给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。

示例 1:

输入:
"())"

输出:
1

示例 2:

输入:
"((("

输出:
3

示例 3:

输入:
"()"

输出:
0

示例 4:

输入:
"()))(("

输出:
4

4. 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例:

board =
[
  ['A','B','C','E'],
  ['S','F','C','S'],
  ['A','D','E','E']
]

给定 word = "ABCCED", 返回 true.
给定 word = "SEE", 返回 true.
给定 word = "ABCB", 返回 false.

5. 跳水板

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。

返回的长度需要从小到大排列。

示例:

输入:
shorter = 1
longer = 2
k = 3

输出: 
{3,4,5,6}

提示:

  • 0 < shorter <= longer
  • 0 <= k <= 100000