Kazaf's blog Kazaf's blog
首页
  • javascript
  • typescript
  • vue
  • react
  • babel
  • nginx
GitHub (opens new window)

Kazaf

前端打字员
首页
  • javascript
  • typescript
  • vue
  • react
  • babel
  • nginx
GitHub (opens new window)
  • LeetCode 跳水版-面试题16.11

    • 题目
      • 思路
      • LeetCode
      kazaf
      2021-06-15

      LeetCode 跳水版-面试题16.11

      # 题目

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

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

      # 思路

      这个排列组合很简单,设 i 是使用短木板的数量,当你用了 i 个 shorter 的话,那么一定只剩下 k - i 的 longer,所以 i 在 [0, k] 的范围里做一次遍历,分别把得到的结果都加到 res 数组里即可。

      注意特殊情况:

      • k = 0 直接返回空数组。
      • shorter = longer 的时候,直接返回 [shorter * k]。
      /**
       * @param {number} shorter
       * @param {number} longer
       * @param {number} k
       * @return {number[]}
       */
      const divingBoard = function (shorter, longer, k) {
        if (k === 0) {
          return []
        }
      
        if (shorter === longer) {
          return [k * shorter]
        }
      
        const res = []
      
        for (let i = 0; i <= k; i++) {
          let longCount = i
          let shortCount = k - i
          res.push(shortCount * shorter + longCount * longer)
        }
      
        return res
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      编辑 (opens new window)
      #LeetCode
      上次更新: 2022/03/19, 16:48:28
      最近更新
      01
      React中的受控和非受控组件
      09-22
      02
      nginx基本配置
      06-01
      03
      vue添加水印
      05-26
      更多文章>
      Theme by Vdoing | Copyright © 2021-2022
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式