using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] xs)=>
xs.Select((x,i)=> i >0&& i < xs.Length -1&& xs.Take(i).Sum()== xs.Skip(i+1).Sum()? i :(int?)null).FirstOrDefault(i => i.HasValue)??-1;}}
答案3:
using System;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] xs){int sl =0, sr = xs.Sum();for(int i =0; i < xs.Length; i++){
sr -= xs[i];if(sl == sr)return i;
sl += xs[i];}return-1;}}}
答案4:
namespace ArrayPivot
{using System;using System.Linq;using System.Collections.Generic;publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] lst){var index = Enumerable.Range(1, lst.Length -1).FirstOrDefault(i => lst.Take(i).Sum(_ => _)== lst.FromLast(i +1).Sum(_ => _));return index ==0?-1: index;}privatestaticint[]FromLast(thisint[] lst,int n){var l =newList<int>();for(var i = n; i < lst.Length; i++){
l.Add(lst[i]);}return l.ToArray();}}}
using System;using System.Collections.Generic;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] integerArray){int pivotIndex =-1;for(int i =0; i < integerArray.Length; i++){int currIndex = i;
List<int> rightNumbens =newList<int>();for(int r =0; r < i; r++){
rightNumbens.Add(integerArray[r]);}
List<int> leftNumbers =newList<int>();for(int l = i +1; l < integerArray.Length; l++){
leftNumbers.Add(integerArray[l]);}
pivotIndex = rightNumbens.Sum()== leftNumbers.Sum()? currIndex : pivotIndex;}return pivotIndex;}}}
答案7:
using System;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] integerArray){for(var i =0; i < integerArray.Length; i++){var left = integerArray.Take(i).Sum();var right = integerArray.Skip(i+1).Take(integerArray.Length - i).Sum();if(left == right)return i;}return-1;}}}
答案8:
using System;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] integerArray){int[] l = integerArray;int[] r = integerArray.Reverse().ToArray();for(int i =1; i < integerArray.Length -1; i++){if(sum(l, i)==sum(r, integerArray.Length -1- i)){return i;}}return-1;}privatestaticintsum(int[] integerArray,int index){int ret =0;for(var i =0; i < index; i++){
ret += integerArray[i];}return ret;}}}
答案9:
using System;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] integerArray){int pivotIndex =-1;for(int i =1; i < integerArray.Length; i++){int sumLeft =0, sumRight =0;for(int j =0; j < i; j++){
sumLeft += integerArray[j];}for(int k = i+1; k < integerArray.Length; k++){
sumRight += integerArray[k];}if(sumLeft == sumRight){
pivotIndex = i;break;}continue;}return pivotIndex;}}}
答案10:
using System;using System.Linq;namespace ArrayPivot
{publicstaticclassArrayExtention{publicstaticintFindPivotIndex(thisint[] integerArray){for(int i =0; i < integerArray.Length -3; i++){int a = integerArray.Take(i +1).Sum();if(a == integerArray.Sum()- a - integerArray[i+1])return i +1;}return-1;}}}
找到主元【难度:2级】:答案1:namespace ArrayPivot { using NUnit.Framework; using System; [TestFixture] public class ArrayPivotTest { [TestCase(new int[]{1,2,4,6,2,2,2,1},ExpectedResult=3)] [Te...