2
思路:每次只考虑数列的首尾即可,序列用(a0,a1,,,an-1)表示,如果首尾相等那么就是对(a1,a2,,,,an-2)在进行判断。首尾不等的时候有两种情况,首部小,那么就将首部的临近两个相加,操作数加一,并对(a2,a3,,,an-1)在进行判断;尾部小,那么将尾部的两个元素相加,操作数加一,并对(a1,a2,,,,an-2)进行判断。
int GetCnt(int *arr, int len) { int front = 0;//数组之首 int end = len - 1;//数组尾 int count = 0; //对比数组首尾,如果相等那么就去掉队首队尾 while (front < end) { if (arr[front] < arr[end]) { arr[front + 1] += arr[front]; front++; count++; } else if (arr[front]>arr[end]) { arr[end - 1] += arr[end]; end--; count++; } else { front++; end--; } } return count; }