File tree
Expand file treeCollapse file tree3 files changed
+104
-0
lines changed src/com/blankj/easy/_16_11
Expand file treeCollapse file tree3 files changed
+104
-0
lines changed Original file line number | Diff line number | Diff line change |
---|
|
32 | 32 | | 9 | [Palindrome Number][0009] | Math |
|
33 | 33 | | 13 | [Roman to Integer][0013] | Math, String |
|
34 | 34 | | 14 | [Longest Common Prefix][0014] | String |
|
| 35 | +| 16.11| [跳水板(Diving Board LCCI)][16_11] | 递归、记忆化 | |
35 | 36 | | 20 | [Valid Parentheses][0020] | Stack, String |
|
36 | 37 | | 21 | [Merge Two Sorted Lists][0021] | Linked List |
|
37 | 38 | | 26 | [Remove Duplicates from Sorted Array][0026] | Array, Two Pointers |
|
|
121 | 122 | [0009]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0009/README.md
|
122 | 123 | [0013]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0013/README.md
|
123 | 124 | [0014]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0014/README.md
|
| 125 | +[16_11]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/16_11/README.md |
124 | 126 | [0020]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0020/README.md
|
125 | 127 | [0021]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0021/README.md
|
126 | 128 | [0026]: https://.com/Blankj/awesome-java-leetcode/blob/master/note/0026/README.md
|
|
Original file line number | Diff line number | Diff line change |
---|
|
| 1 | +# [跳水板(Diving Board LCCI)][title] |
| 2 | + |
| 3 | +## 题目描述 |
| 4 | + |
| 5 | +你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为`shorter`,长度较长的木板长度为`longer`。你必须正好使用`k`块木板。编写一个方法,生成跳水板所有可能的长度。 |
| 6 | + |
| 7 | +返回的长度需要从小到大排列。 |
| 8 | + |
| 9 | +**示例:** |
| 10 | + |
| 11 | +``` |
| 12 | +输入: |
| 13 | +shorter = 1 |
| 14 | +longer = 2 |
| 15 | +k = 3 |
| 16 | +输出: {3,4,5,6} |
| 17 | +``` |
| 18 | + |
| 19 | +**提示:** |
| 20 | + |
| 21 | +* 0 < shorter <= longer |
| 22 | +* 0 <= k <= 100000 |
| 23 | + |
| 24 | +**标签:** 递归、记忆化 |
| 25 | + |
| 26 | + |
| 27 | +## 思路 |
| 28 | + |
| 29 | +这题乍一看,好像得用递归或动态规划来解,仔细一想,其实就是高中数学学过的等差数列知识。 |
| 30 | + |
| 31 | +当 `k == 0` 时,返回 `[]` 即可; |
| 32 | + |
| 33 | +当 `shorter == longer` 时,返回 `[k * shorter]` 即可; |
| 34 | + |
| 35 | +当 `shorter != longer` 时,那么其实就是一个首项为 `k * shorter`,末项为 `k * longer`,公差为 `longer - shorter` 的等差数列么; |
| 36 | + |
| 37 | +我们根据以上情况就可以写出如下代码了: |
| 38 | + |
| 39 | + |
| 40 | +```java |
| 41 | +public class Solution { |
| 42 | +public int[] divingBoard(int shorter, int longer, int k) { |
| 43 | +if (k == 0) { |
| 44 | +return new int[0]; |
| 45 | +} |
| 46 | +if (shorter == longer) { |
| 47 | +return new int[]{shorter * k}; |
| 48 | +} |
| 49 | +int[] ans = new int[k + 1]; |
| 50 | +int st = k * shorter;// 等差数列的首项 |
| 51 | +int delta = longer - shorter;// 公差 |
| 52 | +for (int i = 0; i <= k; i++) { |
| 53 | +ans[i] = st + i * delta; |
| 54 | +} |
| 55 | +return ans; |
| 56 | +} |
| 57 | +} |
| 58 | +``` |
| 59 | + |
| 60 | + |
| 61 | +## 结语 |
| 62 | + |
| 63 | +如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 上的 LeetCode 题解:[awesome-java-leetcode][ajl] |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +[title]: https://leetcode-cn.com/problems/diving-board-lcci |
| 68 | +[ajl]: https://.com/Blankj/awesome-java-leetcode |
Original file line number | Diff line number | Diff line change |
---|
|
| 1 | +package com.blankj.easy._16_11; |
| 2 | + |
| 3 | +import java.util.Arrays; |
| 4 | + |
| 5 | +/** |
| 6 | +* <pre> |
| 7 | +* author: Blankj |
| 8 | +* blog : http://blankj.com |
| 9 | +* time : 2020/07/08 |
| 10 | +* desc : |
| 11 | +* </pre> |
| 12 | +*/ |
| 13 | +public class Solution { |
| 14 | +public int[] divingBoard(int shorter, int longer, int k) { |
| 15 | +if (k == 0) { |
| 16 | +return new int[0]; |
| 17 | +} |
| 18 | +if (shorter == longer) { |
| 19 | +return new int[]{shorter * k}; |
| 20 | +} |
| 21 | +int[] ans = new int[k + 1]; |
| 22 | +int st = k * shorter;// 等差数列的首项 |
| 23 | +int delta = longer - shorter;// 公差 |
| 24 | +for (int i = 0; i <= k; i++) { |
| 25 | +ans[i] = st + i * delta; |
| 26 | +} |
| 27 | +return ans; |
| 28 | +} |
| 29 | + |
| 30 | +public static void main(String[] args) { |
| 31 | +Solution solution = new Solution(); |
| 32 | +System.out.println(Arrays.toString(solution.divingBoard(1, 2, 3))); |
| 33 | +} |
| 34 | +} |
You can’t perform that action at this time.
0 commit comments