程序员面试金典 - 面试题 16.11. 跳水板(数学)

1. 题目

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

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

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

提示:
0 < shorter <= longer
0 <= k <= 100000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diving-board-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 这题非常简单,要读清楚题目,不需要知道中间可能的长度,一开始还动态规划。。。
  • 需要使用 k 块板子,短的 k-i 块,长的 i 块不就行了吗,i 从 0 到 k,k+1 种可能
class Solution {
public:
    vector<int> divingBoard(int shorter, int longer, int k) {
    	if(k == 0)
    		return {};
    	if(shorter == longer)//相等只有一种可能
    		return vector<int> ({k*shorter});
    	vector<int> ans(k+1);
    	int i, j = 0;
    	for(i = 0; i <= k; ++i)
    	{
    		ans[j++] = shorter*(k-i)+longer*i;
    	}
    	return ans;
    }
};

在这里插入图片描述

发布了770 篇原创文章 · 获赞 1031 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_21201267/article/details/105112187