मान लीजिए, हमें पूर्णांकों की एक क्रमबद्ध सरणी दी गई है, आइए हम इसे arr कहते हैं। हमें ऐसा पूर्णांक x ज्ञात करना है कि −
. का मानabs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)
सबसे छोटा संभव है (यहाँ एब्स निरपेक्ष मान को दर्शाता है)। यदि कई संभावित उत्तर हैं, तो सबसे छोटा उत्तर दें।
उदाहरण के लिए -
के लिए,
arr = [2, 4, 7],
आउटपुट होना चाहिए -
absoluteValuesSumMinimization(arr) = 4
क्योंकि एब्स(2 - 4) + एब्स(4 - 4) + एब्स(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