public static int[] CalculateSpan(int[] Input) { int len = Input.Length; int[] Span = new int[len]; //Span[0] = 0; IStack stk = new StackArray(len); //stk.Push(0); for (int i = 0; i < len; i++) { if (i == 0) { Span[0] = 0; stk.Push(0); } else { if (Input[i] < Input[i - 1]) { Span[i] = 1; stk.Push(i); } else { while (!stk.IsEmpty() && Input[stk.Top()] < Input[i]) { stk.Pop(); } if (stk.IsEmpty()) { Span[i] = 0; stk.Push(i); } else { Span[i] = i - stk.Top(); stk.Push(i); } } } } return(Span); }
public void GetTopOfEmptyStack() { Assert.Throws <StackIsEmptyException>(() => { stack.Top(); }); }