File tree 3 files changed +104
-0
lines changed
src/com/blankj/easy/_16_11
3 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://github.com/Blankj/awesome-java-leetcode/blob/master/note/0009/README.md
122
123
[ 0013 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0013/README.md
123
124
[ 0014 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0014/README.md
125
+ [ 16_11 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/16_11/README.md
124
126
[ 0020 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0020/README.md
125
127
[ 0021 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0021/README.md
126
128
[ 0026 ] : https://github.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,可以关注我 GitHub 上的 LeetCode 题解:[ awesome-java-leetcode] [ ajl ]
64
+
65
+
66
+
67
+ [ title ] : https://leetcode-cn.com/problems/recover-a-tree-from-preorder-traversal
68
+ [ ajl ] : https://github.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