首頁 >web前端 >js教程 >Codewars - 尋找奇偶校驗異常值

Codewars - 尋找奇偶校驗異常值

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-05 19:30:47755瀏覽

問候。

Codewars - Find The Parity Outlier

我在這個系列中發布了 Codewars 挑戰和我的思考過程。我盡可能使用 JS 和 Node 18。只是為了清楚起見,我正在合理地使用它們。

問題顯示我們需要找到其中一個:充滿偶數的陣列中的奇數,或是充滿奇數的陣列中的偶數。也就是說:
[0,2,4,6,8,97,14,14,-2]→ 97
[1,3,2,-3,-7,227,-183]→ 2


首先,我將透過查看陣列的前 3 個元素來檢查哪種異常值:

  • 3 個偶數元素 =>
    Σ 2ximomooo2)=0sum_{substack{0leq ile i}mod 2 ) = 0 0≤i≤ 2 Σ (x
    mod2)=0
  • 1 個奇數元素 =>
    Σ 2ximomooo2)=1sum_{substack{0leq ile i}mod 2 ) = 1 0≤i≤ 2 Σ (x
  • mod2)=1 2 個奇數元素 => Σ 2ximomooo2)=2sum_{substack{0leq ile i}mod 2 ) = 2 0≤i≤ 2 Σ (x
    我 mod2)=2
  • 3 個奇數元素 =>
    Σ 2ximomooo2)=3sum_{substack{0leq ile i}mod 2 ) = 3 0≤i≤ 2 Σ (x


mod
// 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)=

3
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;
}

Codewars - Find The Parity Outlier


之後我們需要做的就是遍歷數組,直到找到一個不同模 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn