हमें एक JavaScript फ़ंक्शन लिखना है जो पहले तर्क के रूप में पूर्णांकों की एक सरणी और दूसरे तर्क के रूप में एक पूर्णांक लेता है।
फ़ंक्शन को जांचना चाहिए कि क्या हम मूल सरणी से n (दूसरा तर्क) उप-सरणियाँ बना सकते हैं जैसे कि सभी उप-सरणियों का योग समान हो।
उदाहरण के लिए -
यदि इनपुट हैं -
const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;
आउटपुट true होना चाहिए क्योंकि उप-सरणियाँ हैं: [5], [1, 4], [2, 3], [2, 3] जिनका योग 5 के बराबर है।
उदाहरण
निम्नलिखित कोड देखें:
const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;
const canFormSubarray = (arr = [], num) => {
const total = arr.reduce((sum, num) => sum + num, 0);
if (total % num !== 0) {
return false;
}
const target = total / num;
const visited = new Array(arr.length).fill(false);
const canPartition = (start, numberOfSubsets, currentSum) => {
if (numberOfSubsets === 1) {
return true;
}
if (currentSum === target) {
return canPartition(0, numberOfSubsets - 1, 0);
};
for (let i = start; i < arr.length; i++) {
if (!visited[i]) {
visited[i] = true;
if (canPartition(i + 1, numberOfSubsets, currentSum + arr[i])) {
return true;
}
visited[i] = false;
};
};
return false;
};
return canPartition(0, num, 0);
};
console.log(canFormSubarray(arr, num));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
true