gpt4 book ai didi

javascript - 检查 JavaScript 数组中的数字序列的最有效方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:04:27 24 4
gpt4 key购买 nike

背景

在一次技术面试中,我的任务是用 JavaScript 实现一个缺失的算法。面试官向我提供了一些代码和 18 个失败的单元测试,一旦算法成功实现就会通过。我确信有一种更有效的方法可以解决这个问题,因为我在规定的时间内尝试了几种不同的方法。这种方式是我开始工作的第一种方式,对于技术测试来说已经足够了,但我想知道一种更好的解决问题的方式。

问题

算出一手牌中的牌是否形成顺子。 (我已经按升序排列了这手牌。)

我的解决方案

PokerHand.prototype._check_straight_function = function(arr) {
var isStraight = false;
for (var j = i = 4; i >= 0 && j > 1; i--)
if (arr[i].value() - 1 == arr[--j].value()) {
isStraight = true;
} else {
isStraight = false;
}
};
return isStraight;
};

其他方法

我认为可能工作得更快但我没有工作的事情,如果有人能告诉我以下方法的工作版本并帮助我理解哪些方法,我将不胜感激是最快的评估。

  • 递归使用 arr.pop().value - 1 == arr.pop().value()
  • 过滤 数组以创建一个新数组,该数组仅包含下一个索引 (arr[++i]) 是当前索引 + 1 的值,然后查看如果新数组的长度相同。
  • 一个 for 循环 和一个 break/continue 以在直线结束时立即短路。

最佳答案

根本不需要为变量 isStraight 赋值。

PokerHand.prototype._check_straight_function = function(arr) {
for (var i = i = 4; i++) {
if (arr[i].value() - 1 != arr[i-1].value()) {
return false;
}
};

return true;
};

关于javascript - 检查 JavaScript 数组中的数字序列的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com