Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

อาร์เรย์ย่อยที่ยาวที่สุดที่มีความแตกต่างแน่นอนเท่ากับจำนวนหนึ่งใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน 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