using System;using System.Collections.Generic;publicclassConsecutives{publicstatic List<int>SumConsecutives(List<int> s){
List<int> ret =newList<int>();int last = s[0], sum =0;foreach(int i in s){if(i == last) sum += last;else{
ret.Add(sum);
sum = last = i;}}
ret.Add(sum);return ret;}}
using System.Linq;using System.Collections.Generic;publicclassConsecutives{publicstatic List<int>SumConsecutives(List<int> s){var stack =newStack<int>(new[]{ s[0]});for(int i =1; i < s.Count; i++){var sum = s[i];if(s[i]== s[i -1]){
sum += stack.Pop();}
stack.Push(sum);}return stack.Reverse().ToList();}}
答案5:
using System;using System.Collections.Generic;publicclassConsecutives{publicstatic List<int>SumConsecutives(List<int> s){
List<int> Sumlist= s;for(int i =0; i < Sumlist.Count; i++){int k=0;bool flag =false;try{while(Sumlist[i]== Sumlist[i + k +1]){
k++;
flag =true;if((i + k +1)>= Sumlist.Count)break;}}catch{};if(flag){
Sumlist[i]= Sumlist[i]*(k +1);
Sumlist.RemoveRange(i+1,k);}}return Sumlist;}}
答案6:
using System.Collections.Generic;publicclassConsecutives{publicstatic List<int>SumConsecutives(List<int> s){if(s.Count ==0|| s.Count ==1)return s;
List<int> ret =newList<int>();int cont = s[0];int ant = s[0];for(int i =1; i < s.Count; i++){if(s[i]!=ant){
ret.Add(cont);
ant = s[i];
cont =0;}
cont += s[i];}
ret.Add(cont);return ret;}}
答案7:
using System.Collections.Generic;publicclassConsecutives{publicstatic List<int>SumConsecutives(List<int> s){
List<int> r =newList<int>(s.Count);int sum = s[0];for(int i =1, currentElement = sum; i < s.Count; i++)if(currentElement == s[i])
sum += currentElement;else{
r.Add(sum);
currentElement = s[i];
sum = currentElement;}
r.Add(sum);return r;}}
答案8:
using System.Collections.Generic;using System.Linq;publicclassConsecutives{privatestatic List<int> _result;privatestatic List<int> _temporaryItems;publicstatic List<int>SumConsecutives(List<int> s){
_result =newList<int>();
_temporaryItems =newList<int>(){ s.FirstOrDefault()};for(int i =1; i < s.Count; i++){if(IsSameAsLast(s[i]))AddItemToList(s[i]);elseSaveItem(s[i]);}
_result.Add(_temporaryItems.Sum());return _result;}privatestaticboolIsSameAsLast(intvalue){return _temporaryItems.FirstOrDefault()==value;}privatestaticvoidAddItemToList(intvalue){
_temporaryItems.Add(value);}privatestaticvoidSaveItem(intvalue){
_result.Add(_temporaryItems.Sum());
_temporaryItems =newList<int>(){value};}}
using System;using System.Collections.Generic;publicclassConsecutives{//hey... the function has one (long) line;-)publicstatic List<int>SumConsecutives(List<int> s){ List<int> n=newList<int>();int a=0; s.Add(-111);for(int i=0;i<s.Count-1;i++)if(s[i]==s[i+1]) a+=s[i];else{ n.Add(a+s[i]); a=0;};return n;}}
总和连续【难度:2级】:答案1:using System;using System.Collections.Generic;public class Consecutives{ public static List<int> SumConsecutives(List<int> s) { List<int> ret = new L...