ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองอาร์เรย์ a1 และ a2 ของสตริง แต่ละสตริงประกอบด้วยตัวอักษร a-z ให้ x เป็นสตริงใดในอาร์เรย์แรก และ y เป็นสตริงใดในอาร์เรย์ที่สอง ฟังก์ชันควรหาค่า:
max(|length(x) - length(y)|)
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"];
const arr2 = ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"];
const findMaxAbsDiff = (arr1 = [], arr2 = []) => {
if (arr1.length === 0 || arr2.length === 0) {
return -1;
}
let l1 = arr1.map(str => str.length);
let l2 = arr2.map(str => str.length);
return Math.max(Math.max(...l1) - Math.min(...l2), Math.max(...l2) - Math.min(...l1));
};
console.log(findMaxAbsDiff(arr1, arr2));
ผลลัพธ์
13
คำอธิบายเพิ่มเติม
หาความยาว min/max ของแต่ละอาร์เรย์ ความต่างสัมบูรณ์สูงสุดจะเป็น max(max1-min2, max2-min1) ไม่ต้องเปรียบเทียบทุกคู่ (O(n×m)) แค่ O(n+m) arr1 max=11 (znnnnfqknaz) min=3 (oox) arr2 max=16 min=10 → max(11-10, 16-3) = max(1,13) = 13