মান লিজিয়ে, আমাদের কাছে একটি সর্টেড পূর্ণসংখ্যার অ্যারে আছে, আমরা এটিকে arr বলব। আমাদের এমন একটি পূর্ণসংখ্যা x খুঁজে বের করতে হবে যাতে −
abs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)
মানটি ন্যূনতম হয় (এখানে abs মান tercero আבסোলিউট ভ্যালু বোঝাচ্ছে)। যদি একাধিক সম্ভাব্য উত্তর থাকে, তাহলে সবচেয়ে ছোটটি আউটপুট করুন।
উদাহরণস্বরূপ −
যেহেতু,
arr = [2, 4, 7],
আউটপুট হওয়া উচিত −
absoluteValuesSumMinimization(arr) = 4
কারণ abs(2 - 4) + abs(4 - 4) + abs(7 - 4) = 5 যা যেকোনো সংখ্যা দিয়ে অর্জন করা সম্ভাব্য ন্যূনতম।
আমরা জানি,
arr.length/2
আधी দৈর্ঘ্য ফেরত দেয়।
জোড় দৈর্ঘ্যের অ্যারেতে, এটি মাঝপথের ডানে হবে। বিজোড় দৈর্ঘ্যের অ্যারেতে, এটি মাঝপথে হবে।
Math.ceil(arr.length/2) প্রয়োজনে রাউন্ড আপ করে, তাই ৫ এলিমেন্টের অ্যারেতে মাঝপথ ২.৫ → ৩। এটি বিজোড় দৈর্ঘ্যের অ্যারেকে এক অফ বাই করে।
Math.ceil(arr.length/2)-1 এক ইনডেক্স নিচে আনে। এটি সব অ্যারেতে অফ-বাই-ওয়ান এরর ঠিক করে।
উদাহরণ
নিচে কোড দেওয়া হল −
const arr = [2, 4, 7]; const absoluteValuesSumMinimization = (arr = []) => { const res = []; arr.forEach(num => { const sum = arr.reduce((accum, next) => { return accum + Math.abs(next - num); }, 0); res.push(sum); }); const lowest = Math.min(...res); return arr[res.indexOf(lowest)]; }; console.log(absoluteValuesSumMinimization(arr));আউটপুট
কনসোলে আউটপুট হবে −
4