心得
前缀和
sum[i] += sum[i-1];
int countOperations(int num1, int num2){
int ans=0;
while(num1!=0&&num2!=0){
ans++;
if(num1>=num2){num1-=num2;}
else{num2-=num1;}
}
return ans;
}
#define maxn 100010
int sum[maxn]; //定义一个长度为100010的数组
int pivotIndex(int* nums, int numsSize){
int i;
for(i = 0; i < numsSize; ++i) {
sum[i] = nums[i]; //复制一个数组
if(i)
sum[i] += sum[i-1]; // 计算前缀和
}
if(sum[numsSize-1] - sum[0] == 0) {
return 0; // 考虑 中心下标 在 0 的情况
}
for(i = 1; i < numsSize; ++i) {
if( sum[i-1] == sum[numsSize-1] - sum[i] ) {
return i;
// 左边的部分和为sum[i-1],右边的部分和为sum[numsSize-1] - sum[i]
}
}
return -1; // 找不到中心坐标的情况,直接返回 -1
}
#define maxn 100010
int sum[maxn]; //定义一个长度为100010的数组
int findMiddleIndex(int* nums, int numsSize){
int i;
for(i = 0; i < numsSize; ++i) {
sum[i] = nums[i]; //复制一个数组
if(i)
sum[i] += sum[i-1]; // 计算前缀和
}
if(sum[numsSize-1] - sum[0] == 0) {
return 0; // 考虑 中心下标 在 0 的情况
}
for(i = 1; i < numsSize; ++i) {
if( sum[i-1] == sum[numsSize-1] - sum[i] ) {
return i;
// 左边的部分和为sum[i-1],右边的部分和为sum[numsSize-1] - sum[i]
}
}
return -1; // 找不到中心坐标的情况,直接返回 -1
}
#define maxn 100010
int sum[maxn]; //定义一个长度为100010的数组
int pivotIndex(int* nums, int numsSize){
int i;
for(i = 0; i < numsSize; ++i) {
sum[i] = nums[i]; //复制一个数组
if(i)
sum[i] += sum[i-1]; // 计算前缀和
}
if(sum[numsSize-1] - sum[0] == 0) {
return 0; // 考虑 中心下标 在 0 的情况
}
for(i = 1; i < numsSize; ++i) {
if( sum[i-1] == sum[numsSize-1] - sum[i] ) {
return i;
// 左边的部分和为sum[i-1],右边的部分和为sum[numsSize-1] - sum[i]
}
}
return -1; // 找不到中心坐标的情况,直接返回 -1
}