我正在嘗試解決這個卡塔:
給你一個唯一整數 arr 和兩個整數 a 和 b 的串列。你的任務是找出 a 和 b 在 arr 中是否連續出現,并回傳一個布林值(如果 a 和 b 連續,則為 True,否則為 False)。
保證 a 和 b 都存在于 arr 中。
測驗示例:
consecutive([1, 3, 5, 7], 3, 7), false
consecutive([1, 3, 5, 7], 3, 1), true
consecutive([1, 6, 9, -3, 4, -78, 0], -3, 4), true
這是我到目前為止:
for (let i = 0; i < arr.length; i ) {
let index2 = arr.indexOf(b)
let index1 = arr.indexOf(a)
let diff = (index2) - (index1)
if (diff > 1) {
console.log(diff, 'false');
return false
} else {
console.log(diff, 'true');
return true
}
}
測驗示例正在通過,但是當我提交解決方案時,其他一些測驗沒有通過。我看不到沒有通過的測驗,所以我一直堅持這個。另外,我認為,如果 a 和 b 是相同的數字,那么如果我有
cons([4, 6, 4, 5, 6], 4, 4)
我的解決方案無法通過此測驗,那么我該如何改進呢?
uj5u.com熱心網友回復:
為了回答您的問題,您的代碼未通過所有測驗的原因是您沒有考慮到aafter 出現時b, diff 將為負數。
所以你應該做
let diff = Math.abs(index2 - index1)
此外,for 回圈似乎沒有做任何事情,因此您可以將其洗掉。
uj5u.com熱心網友回復:
腳步:
- 查找給定值的索引
- 檢查任何一個值 或 - 1 的索引是否與其他相同。
代碼:
function consecutive(number_list, value1,value2){
var index_value_one = number_list.indexOf(value1);
var index_value_two = number_list.indexOf(value2);
if(index_value_one == (index_value_two 1) || index_value_one == (index_value_two - 1)){
return true;
}
return false;
}
console.log(consecutive([1, 3, 5, 7], 3, 7));
console.log(consecutive([1, 3, 5, 7], 3, 1));
console.log(consecutive([1, 6, 9, -3, 4, -78, 0], -3, 4));
輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/395448.html
標籤:javascript 数组
