हमें एक JavaScript फ़ंक्शन लिखना है जो एकमात्र आर्गुमेंट के रूप में पूर्णांकों की एक सरणी लेता है।
फ़ंक्शन को यह निर्धारित करना चाहिए कि क्या सरणी को दो उप-सरणियों में विभाजित करने का कोई तरीका मौजूद है जैसे कि दोनों उप-सरणियों में मौजूद तत्वों का योग समान हो। उप-सरणियों में तत्वों को विभाजित करते समय हमें यह सुनिश्चित करना होगा कि मूल सरणी का कोई तत्व न छूटे।
उदाहरण
यदि इनपुट सरणी है:
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
तो आउटपुट होना चाहिए:
const output = true;
क्योंकि वांछित उप-सरणियां हैं: [5, 3, 4, 6] और [7, 1, 8, 2] जिन दोनों का योग 18 के बराबर है।
कोड उदाहरण
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
const canPartition = (arr = []) => {
const sum = arr.reduce((acc, val) => acc + val);
if (sum % 2 !== 0){
return false;
};
const target = sum / 2;
const array = new Array(target + 1).fill(false);
array[0] = true;
for (const num of arr) {
if (array[target - num]){
return true
};
for (let i = target; i >= num; i--) {
array[i] = array[i - num];
}
}
return false;
};
console.log(canPartition(arr));
आउटपुट
true