Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาตัวเลขที่ไม่ซ้ำและมากที่สุดในอาร์เรย์ด้วย JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องวนลูปผ่านอาร์เรย์และเลือกตัวเลขที่มากที่สุดซึ่งปรากฏเพียงครั้งเดียวในอาร์เรย์ คืนค่าตัวเลขนี้ และถ้าไม่มีตัวเลขที่ไม่ซ้ำ ให้คืน -1

เรายังทราบว่าค่าสูงสุดของสมาชิกอาร์เรย์ไม่เกิน 100 และมากกว่า 0 คือ:

0 < arr[i] < 101

สำหรับทุก i ในดัชนีอาร์เรย์

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าคือ:

const arr = [35, 37, 33, 39, 34, 39, 38, 31];

ผลลัพธ์ควรเป็น:

const output = 38;

เนื่องจากค่าในอาร์เรย์จะอยู่ระหว่าง 1-100 เสมอ เราสามารถใช้อาร์เรย์ความยาว 100 เก็บความถี่ของแต่ละตัวเลข แล้ววนจากท้ายมาหาตัวเลขที่ไม่ซ้ำ

ตัวอย่างโค้ด

const arr = [35, 37, 33, 39, 34, 39, 38, 31];
const pickGreatestUnique = (arr = [], bound = 100) => {
  const map = Array(bound).fill(0);
  for(let i = 0; i < arr.length; i++) {
    const num = arr[i];
    map[num - 1]++;
  }
  for(let j = bound - 1; j >= 0; j--) {
    const frequency = map[j];
    if(frequency === 1) {
      return j + 1;
    }
  }
  return -1;
};
console.log(pickGreatestUnique(arr));

ผลลัพธ์

38