मान लीजिए कि हमारे पास एक सरणी ए है, इसमें एन तत्व हैं। हमारा कार्य सरणी A को दो उप-सरणी में विभाजित करना है, ताकि प्रत्येक उप-सरणी का योग समान हो। मान लीजिए कि सरणी A =[2, 3, 4, 1, 4, 5], आउटपुट 1 है, इसलिए 1 से पहले और 1 के बाद के उप-सरणी लिए जाते हैं। [2, 3, 4], और [4, 5]।
इस समस्या को हल करने के लिए, हम right_sum में पहले तत्व को छोड़कर पूरे सरणी की गणना करेंगे। विचार करें कि विभाजन तत्व है। हम बाएं से दाएं पार करेंगे। किसी तत्व को right_sum से घटाना और एक तत्व को left_sum में जोड़ना, हम उस बिंदु को लेते हैं जब right_sum =left_sum.
उदाहरण
#include<iostream> using namespace std; int getPartitionElement(int arr[], int size) { int right = 0, left = 0; for (int i = 1; i < size; i++) right += arr[i]; for (int i = 0, j = 1; j < size; i++, j++) { right -= arr[j]; left += arr[i]; if (left == right) return arr[i + 1]; } return -1; } int main() { int arr[] = { 2, 3, 4, 1, 4, 5 }; int size = sizeof(arr) / sizeof(arr[0]); cout << "Partition element: " << getPartitionElement(arr, size); }
आउटपुट
Partition element: 1