zoukankan      html  css  js  c++  java
  • 面试题 16.11. 跳水板

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

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

    示例:

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

    提示:

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

    分析:

    1)k=0时,则直接返回[]
    2)当shorter与longer长度相等时,只有一种组合方法,就是shorter*k或者longer*k
    3)当shorter<longer时,且k不等于0。
          例如,shorter=1,longer=2,k=3
          1.shorter*3+longer*0=1*3=3
          2.shorter*2+longer*1=1*2+2*1=4
          3.shorter*1+longer*2=1*1+2*2=5
          4.shorter*0+longer*3=2*3=6
          以上推导可得:
          => shorter*(k-i)+longer*i
    
          数组长度为k+1(shorter或者longer取值有k+1种情况,0到k)
          shorter->3,longer->0
          shorter->2,longer->1
          shorter->1,longer->2
          shorter->0,longer->3
          等价于
          longer->3,shorter->0
          longer->2,shorter->1
          longer->1,shorter->2
          longer->0,shorter->3
    

    代码:

    class Solution {
        public int[] divingBoard(int shorter, int longer, int k) {
            if (k == 0) {
                return new int[0];
            }
            if (shorter == longer) {
                return new int[]{shorter * k};
            }
            int[] ans = new int[k + 1];
            for (int i = 0; i <= k; i++) {
                ans[i] = shorter * (k - i) + longer * i;
            }
            return ans;
        }
    }
    
  • 相关阅读:
    数“1”游戏
    第二次冲刺期_每日站立会议_个人记录_文档
    第一次冲刺期——每日站立会议——个人记录——文档
    团队绩效
    其他小组对我们的评价汇总
    Sprint评分表
    大作业项目冲刺阶段(一)
    丹佛机场行李系统Postmortem
    团队项目测试计划
    SCRUM报告(1)
  • 原文地址:https://www.cnblogs.com/wybing/p/13269076.html
Copyright © 2011-2022 走看看