問候。
我在這個系列中發布了 Codewars 挑戰和我的思考過程。我盡可能使用 JS 和 Node 18。只是為了清楚起見,我正在合理地使用它們。
問題顯示我們需要找到其中一個:充滿偶數的陣列中的奇數,或是充滿奇數的陣列中的偶數。也就是說:
[0,2,4,6,8,97,14,14,-2]→ 97
[1,3,2,-3,-7,227,-183]→ 2
首先,我將透過查看陣列的前 3 個元素來檢查哪種異常值:
// odd number in even array while (number % 2 == 0 && counter < integers.length){ number = integers[counter]; counter++; } // even number in odd array while (number % 2 == 1 && counter < integers.length){ number = integers[counter]; counter++; }
2)=
function findOutlier(integers){ let counter = 0; let number = 0; let a = integers[0] % 2; let b = integers[1] % 2; let c = integers[2] % 2; if (a + b + c <= 1){ number = integers[0]; while (number % 2 == 0 && counter < integers.length){ number = integers[counter]; counter++; } } else { number = integers[0]; while (number % 2 == 1 && counter < integers.length){ number = integers[counter]; counter++; } } return number; }
之後我們需要做的就是遍歷數組,直到找到一個不同模 2 的數字。相應地應用所述演算法的兩種變體:
將各個零件組裝在一起,我們最後得到:
function findOutlier(integers){ let counter = 0; let number = 0; let a = Math.abs(integers[0] % 2); let b = Math.abs(integers[1] % 2); let c = Math.abs(integers[2] % 2); if (a + b + c <= 1){ number = integers[0]; while (Math.abs(number) % 2 == 0 && counter < integers.length){ number = integers[counter]; counter++; } } else { number = integers[0]; while (Math.abs(number) % 2 == 1 && counter < integers.length){ number = integers[counter]; counter++; } } return number; }
這正是我在未通過測試時的感受:
其次,我必須用谷歌搜尋發生了什麼事。原來我沒有考慮到負數會出現。所以我必須閱讀 JS 如何處理負模 第三步,用 Math.abs(): 效能不錯,但可讀性不太好。它還有很大的進步空間。 保重。喝水???. 上一頁
以上是Codewars - 尋找奇偶校驗異常值的詳細內容。更多資訊請關注PHP中文網其他相關文章!