เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers เป็นอาร์กิวเมนต์แรก สมมติว่า arr และตัวเลข สมมติว่า num เป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันควรค้นหาและส่งกลับความยาวของอาร์เรย์ย่อยที่ยาวที่สุด (ต่อเนื่องกันหรือไม่ต่อเนื่องกัน) ซึ่งแต่ละคู่มีความแตกต่างที่แน่นอนน้อยกว่าหรือเท่ากับ num
ตัวอย่างเช่น หากอาร์เรย์อินพุตและตัวเลขเป็น −
const arr = [7, 9, 8, 6, 6, 3]; const num = 1;
จากนั้นผลลัพธ์ควรเป็น −
const output = 3,
เพราะอาร์เรย์ย่อยที่ต้องการคือ [7, 6, 6]
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [7, 9, 8, 6, 6, 3]; const maximumSubarray = (arr = [], num = 1) => { if(!arr.length){ return 0; }; const maximum = arr.reduce((acc, val) => Math.max(acc, val)); const buckets = new Array(maximum + 1); buckets.fill(0); const { length } = arr; for(let i=0; i< length; i++){ buckets[arr[i]] += num; }; let max = 0; for(let j=1; j< maximum + 1; j++) { let curr = buckets[j]; let prev = buckets[j - 1]; if(prev != 0 && prev + curr > max) { max = prev + curr; }; }; return max; }; console.log(maximumSubarray(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
3