首页 > web前端 > js教程 > 分享 CodeWars 挑战解决方案:最小规模,从 Basic 到 Aris

分享 CodeWars 挑战解决方案:最小规模,从 Basic 到 Aris

Susan Sarandon
发布: 2024-12-21 07:09:09
原创
286 人浏览过

Sharing Solusi Tantangan CodeWars: Least Larger, dari Dasar hingga aris

从 CodeWars 挑战中学习:最小规模

朋友们大家好!这次我想分享来自 CodeWars 的最小更大挑战。这个挑战确实令人兴奋,因为它训练了逻辑和系统思维,并给出了这个概念如何在现实世界中发挥作用的想法。来来来,我们一起讨论一下!


挑战是什么?

因此,我们得到了一个数字数组和某个索引。我们的任务是找到比该索引处的元素大的最小数字,然后返回索引。如果没有匹配的数字,我们必须返回-1。

示例:

数组:[4, 1, 3, 5, 6]

索引:0(参考编号为4)

结果是 3,因为大于 4 的最小数字是 5,它位于索引 3 处。
为什么可以是3?
数组从0开始
所以:
4 : 索引 0
1 : 索引 1
3 : 索引 2
5 : 索引 3
6 : 索引 4


我创建的解决方案

为了解决这个挑战,我创建了一个名为 lessLarger 的函数。代码如下:

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}
登录后复制
登录后复制

它是如何运作的?

  1. 初始化

    • 我设置较小为Infinity作为初始值进行比较。
    • 如果没有令人满意的元素,结果将设置为 -1。
  2. 数组迭代

    • 我检查数组中的每个元素。
    • 必须满足两个条件:
      1. 该元素大于参考元素(a[i])。
      2. 元素比之前的比较小(更小)。
    • 如果两个条件都满足,我会更新得更小,并将元素索引保存在结果中。
  3. 返回结果

    • 如果存在满足要求的元素,该函数将返回其索引。
    • 如果没有,结果仍然是-1。

使用示例

console.log(leastLarger([4, 1, 3, 5, 6], 0)); // Output: 3
登录后复制

说明:

  • 参考元素为 4(索引为 0)。
  • 大于 4 的元素是 [5, 6]。
  • 这些元素中,最小的是 5,它的位置位于索引 3。

先进的解决方案:简洁的一行

对于那些更喜欢“仅 JavaScript”方法的人,我们可以使用内置方法(如 filter、Math.min 和 findIndex)在一行代码中编写此解决方案:

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}
登录后复制
登录后复制

这段代码做了同样的事情,但风格更加实用和简洁。非常适合您想要编写快速解决方案而无需太多附加变量的情况。


真实世界案例研究

这样的函数实际上在各种实际情况下都非常相关。一些例子:

  1. 订票系统

    • 在票务系统中,我们经常需要找到高于某个价格的最低座位价格(例如填补下一个座位)。
  2. 任务调度

    • 制定日程时,我们可以寻找大于某个时间的下一个最接近的时间,例如分配会议时段或下一个任务。
  3. 库存管理

    • 在仓库中,如果您需要寻找一个容量最小但仍足以存放某些物品的存储位置。

这个挑战看起来很简单,但是当我尝试之后,我发现整洁的逻辑非常重要。我喜欢这个挑战的原因是这个概念在现实世界中的应用程度。

哦对了,如果朋友们还有其他方法来完成这个挑战,请不要犹豫在评论栏中分享,好啊!谁知道呢,我们可能会互相学习不同的方法。希望这次分享有用,祝您编码愉快! ?

以上是分享 CodeWars 挑战解决方案:最小规模,从 Basic 到 Aris的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板