c++ - 如何在数组中找到一个元素,使得左数组的总和等于右数组的总和
问题描述
这是代码应该生成的输入和输出:
- 输入 :
1 4 2 5 0
- 输出 :
2
解释:如果 2 是分区,则:1+ 4=5(LHS)
并且5+0=5(RHS)
应该打印2
,但在我的情况下,我没有得到输出。
我用这样的逻辑尝试了我的代码......第n个元素将出现在数组之间的某个地方。因此,考虑到 arr 的元素总和直到第 n 个元素将是 LHS,而从第 n 个元素开始,它将一直到 arr 的末尾,即 RHS。我还添加了一个while循环,它增加了指向元素n。
#include <iostream.h>
#include <conio.h>
void main(){
int arr[5],arr2[5],i,j=0,k=0,n=1;
cout<<"input_arr\n";
for(i=0;i<5;i++)
cin>>arr[i];
while(n<=5)
{
for(i=n;i<5;n++)
j+=arr[i]; //sum of right side arr from n-th element
for(i=0;i<n;i++)
k+=arr2[i]; //sum of left side arr till n-th element
if(k==j)
cout<<"\n"<<arr[n]; // prints the equilbrium element
else
n++;
}
getch();
}
解决方案
我会给你一些提示,可以指导你找到解决方案:
- 一次计算数组中的总和。我们称之为totalSum。
- 做第二遍并计算partialSum,直到您处理的位置(但不包括在内)。假设这是i,值为a[i]。如果
totalSum - partialSum - a[i] = partialSum
,则位置i是您的答案,而a[i]是它的值。
推荐阅读
- powershell - 用于字符串中可选等号分隔符的 Powershell 正则表达式
- node.js - punycode 在 npm 中已弃用 - 我应该用什么替换它?
- c# - c#MVC OpenID注销所有Web应用程序不起作用
- c# - 如何将自定义标头从 mvc 项目发送到 Web api 项目?
- kubernetes - 如何使 Kubernetes 部署的所有 pod 脱机?
- javascript - 如何在javascript中将相同的EventListner添加到相同的部分内部类
- javascript - 如何放置 svg
React Native 中 flatlist 的内部数据 - typescript - Vue3 Typescript 打破了 webpack encore watcher
- r - 我如何知道可以在函数中使用 $ 调用哪些对象?
- vue.js - 使用 Vue 3、Vuex 4 和 Electron 实现持久存储