面试题 16.11. 跳水板

面试题 16.11. 跳水板

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

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

示例 1

输入:
shorter = 1
longer = 2
k = 3
输出: [3,4,5,6]
解释:
可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4 。以此类推,得到最终结果。

方法一:数学

 

代码:

class Solution {
public:
    vector<int> divingBoard(int shorter, int longer, int k) {
        if (k == 0) {
            return vector <int> ();
        }

        if (shorter == longer) {
            return vector <int> (1, shorter * k);
        }

        vector <int> lengths(k + 1);
        for (int i = 0; i <= k; ++i) {
            lengths[i] = shorter * (k - i) + longer * i;
        }

        return lengths;
    }
};

 

代码:

class Solution {
public:
    void divingBoard(int shorter, int longer, int k) {
        if(k==0) return ;
        vector<int>vec; 
        vec.push_back(shorter*k);
        cout<<vec.back()<<endl;
        int dif= longer-shorter;
        for (int i = 1; i < k; i++)
        {
            vec.push_back(vec.back()+dif);
        }
    }
};

 

因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13568338.html

原文地址:https://www.cnblogs.com/BlairGrowing/p/13568338.html