Rumah > hujung hadapan web > tutorial js > Codewars - Cari The Parity Outlier

Codewars - Cari The Parity Outlier

Mary-Kate Olsen
Lepaskan: 2025-01-05 19:30:47
asal
727 orang telah melayarinya

Salam.

Codewars - Find The Parity Outlier

Saya menyiarkan cabaran Codewars dan proses pemikiran saya dalam siri ini. Saya menggunakan JS dan Node 18 apabila boleh. Hanya demi kejelasan, saya menggunakan mereka secara adil.

Masalahnya mengatakan kita perlu mencari salah satu daripada ini: nombor ganjil dalam tatasusunan yang penuh dengan nombor genap, atau nombor genap dalam tatasusunan yang penuh dengan nombor ganjil. Maksudnya:
[ 0, 2, 4, 6, 8, 97, 14, 14, -2 ] -> 97
[ 1, 3, 2, -3, -7, 227, -183 ] -> 2


Mula-mula, saya akan menyemak jenis outlier dengan melihat 3 elemen pertama tatasusunan:

  • 3 elemen genap =>
    0 i2(xsayamod2)=0sum_{substack{0leq ileq 2}} ( x_{i}mod 2 ) = 0 0≤i≤ 2 (xi mod2)=0
  • 1 unsur ganjil =>
    0 i2(xsayamod2)=1sum_{substack{0leq ileq 2}} ( x_{i}mod 2 ) = 1 0≤i≤ 2 (xi mod2)=1
  • 2 unsur ganjil =>
    0 i2(xsayamod2)=2sum_{substack{0leq ileq 2}} ( x_{i}mod 2 ) = 2 0≤i≤ 2 (xi mod2)=2
  • 3 unsur ganjil =>
    0 i2(xsayamod2)=3sum_{substack{0leq ileq 2}} ( x_{i}mod 2 ) = 3 0≤i≤ 2 (xi mod2)=3

Apa yang perlu kita lakukan selepas itu ialah melintasi tatasusunan sehingga kita mencapai satu nombor yang modulo-2nya berbeza. Dua variasi algoritma tersebut digunakan dengan sewajarnya:

// 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++;
    }
Salin selepas log masuk

Memasang bahagian bersama-sama kita berakhir dengan:

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;
}
Salin selepas log masuk

Dan inilah yang saya rasakan apabila ia tidak lulus ujian:

Codewars - Find The Parity Outlier


Kedua, saya terpaksa google apa yang berlaku. Ternyata saya tidak menganggap nombor negatif boleh muncul. Jadi saya terpaksa membaca cara JS menangani modulo negatif


Untuk langkah ketiga, gunakan Math.abs():

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;
}
Salin selepas log masuk

Prestasi yang baik, walaupun tidak begitu boleh dibaca. Ia mempunyai banyak ruang untuk penambahbaikan.

Jaga diri. Minum air ???.

Sebelumnya

Atas ialah kandungan terperinci Codewars - Cari The Parity Outlier. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan