【发布时间】:2016-09-21 03:12:57
【问题描述】:
我正在研究一个算法问题(在 leetcode 上),它提出以下问题:
给定一个包含 n 的不同数字的数组,该数字取自 0, 1, 2, ..., n,,找出数组中缺少的数字。
例如,
给定nums = [0, 1, 3] 返回2。
我目前的答案是:
var missingNumber = function(nums) {
return nums.filter(function(item, index, arr) {
return arr[index] - arr[index - 1] > 1;
}).shift() - 1;
};
但是,leetcode 正在使用这两个测试用例(以及其他一些测试用例),这对我来说毫无意义:
输入:[0]
预期:1
输入:[0, 1]
预期:2
编辑:也...
输入:[1]
预期:0
据我了解,该算法要求返回数组中缺少的单个数字,因为第一个数字实际上缺少地方。我在这里遗漏了什么还是这个算法的说明非常不清楚?
【问题讨论】:
-
如果给出格式正确的数组,听起来它想要序列中的下一个数字
-
我认为他们只是想从
0到arr.length+1和return计算第一个你在预期的数组中找不到的。 -
@IrkenInvader:我明白了,这可以解释测试用例。虽然它也期望
[1]返回0。我将编辑我的描述。 -
[1] 将返回 0,因为缺少 0(它应该是第一个元素)
-
这更有意义。我认为这可以解释得更清楚一点,但也许这是我的错误。
标签: javascript arrays algorithm