JAVA面试题 跳水板

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

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

示例:

输入:
shorter = 1
longer = 2
k = 3
输出: {3,4,5,6}
提示:

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

思路:首先可以考虑特殊情况,长模板和短木板长度相同的情况下,必然只有一种可能性。长短木板长度不相同的情况下我们可以发现最后输出结果的个数会是木板总数+1

class Solution {
    public int[] divingBoard(int shorter, int longer, int k) {
        if(k == 0) return new int[] {};
		int intLength = k + 1;
		if(shorter == longer) intLength = 1;
		int[] board = new int[intLength];
		if(shorter == longer) {
			board[0] = shorter * k;
		}else {
			for(int i = 0; i <= k; i++) {
				int boardLong = i * longer + (k - i) * shorter;
				board[i] = boardLong;
			}
		}
		return board;
    }
}

  

posted @ 2020-07-08 14:13  蝶花残梦  阅读(187)  评论(0编辑  收藏  举报
Live2D