前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一天一大 leet(跳水板)难度:简单-Day20200708

一天一大 leet(跳水板)难度:简单-Day20200708

作者头像
前端小书童
发布2020-09-24 11:33:34
2330
发布2020-09-24 11:33:34
举报
文章被收录于专栏:前端小书童

题目:

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

示例
代码语言:javascript
复制
输入:
shorter = 1
longer = 2
k = 3
输出:{3,4,5,6}
提示
  • 0 < shorter <= longer
  • 0 <= k <= 100000

抛砖引玉

这道题有点秀逗了,都不太相信逻辑就那么简单,抱着试试看到心态提交下居然还过了,-_-||

k 递增(i),长度=较长 Xi+较短 X(k-i)

代码语言:javascript
复制
/**
 * @param {number} shorter
 * @param {number} longer
 * @param {number} k
 * @return {number[]}
 */
var divingBoard = function (shorter, longer, k) {
  let _result = []
  for (let i = 0; i <= k; i++) {
    let long = longer * i + (k - i) * shorter
    if (long && !_result.includes(long)) {
      _result.push(long)
    }
  }
  return _result
}
代码语言:javascript
复制

用时成功击败了 9.21%

优化下:

特殊情况

  • k 等于 0 返回 []
  • shorter 等于 longer 返回[k*shorter]
代码语言:javascript
复制
/**
 * @param {number} shorter
 * @param {number} longer
 * @param {number} k
 * @return {number[]}
 */
var divingBoard = function (shorter, longer, k) {
  let _result = []
  if (k === 0) return _result
  if (shorter === longer) return [shorter * k]
  for (let i = 0; i <= k; i++) {
    let long = longer * i + (k - i) * shorter
    if (long && !_result.includes(long)) {
      _result.push(long)
    }
  }
  return _result
}

得,用时成了 7.02% 可怕


再检查下,includes 这部分之前是判断重复的,那换成去重方式再试下:只要与最后一位不同就说明不重复

代码语言:javascript
复制
/**
 * @param {number} shorter
 * @param {number} longer
 * @param {number} k
 * @return {number[]}
 */
var divingBoard = function (shorter, longer, k) {
  let _result = []
  if (k === 0) return _result
  if (shorter === longer) return [shorter * k]
  for (let i = 0; i <= k; i++) {
    let long = longer * i + (k - i) * shorter
    if (long && _result[_result.length - 1] !== long) {
      _result.push(long)
    }
  }
  return _result
}

66.67%,就这吧,还要啥自行车,话又说回来,今天的每天一题确实有点....简陋

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例
  • 提示
  • 抛砖引玉
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档