ধরুন, আমাদেরকে পূর্ণসংখ্যার একটি সাজানো অ্যারে দেওয়া হয়েছে, আসুন আমরা এটিকে arr বলি। আমাদের এমন একটি পূর্ণসংখ্যা x খুঁজে বের করতে হবে যা −
এর মানabs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)
সম্ভাব্য ক্ষুদ্রতম (এখানে abs পরম মান নির্দেশ করে)। যদি বেশ কয়েকটি সম্ভাব্য উত্তর থাকে, তাহলে সবচেয়ে ছোটটি আউটপুট করুন।
উদাহরণস্বরূপ -
জন্য,
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) রাউন্ড আপ করে, তাই 5 এর একটি অ্যারের মাঝখানে হবে 2.5 -> 3। এটি বিজোড়-দৈর্ঘ্যের অ্যারেগুলিকে এক করে বন্ধ করে দেয়।
-
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