File tree Expand file tree Collapse file tree 3 files changed +104
-0
lines changed
src/com/blankj/easy/_16_11 Expand file tree Collapse file tree 3 files changed +104
-0
lines changed Original file line number Diff line number Diff line change 3232| 9 | [ Palindrome Number] [ 0009 ] | Math |
3333| 13 | [ Roman to Integer] [ 0013 ] | Math, String |
3434| 14 | [ Longest Common Prefix] [ 0014 ] | String |
35+ | 16.11| [ 跳水板(Diving Board LCCI)] [ 16_11 ] | 递归、记忆化 |
3536| 20 | [ Valid Parentheses] [ 0020 ] | Stack, String |
3637| 21 | [ Merge Two Sorted Lists] [ 0021 ] | Linked List |
3738| 26 | [ Remove Duplicates from Sorted Array] [ 0026 ] | Array, Two Pointers |
121122[ 0009 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0009/README.md
122123[ 0013 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0013/README.md
123124[ 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
124126[ 0020 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0020/README.md
125127[ 0021 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/0021/README.md
126128[ 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