-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolution.cs
More file actions
80 lines (67 loc) · 1.72 KB
/
Solution.cs
File metadata and controls
80 lines (67 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class CustomStack
{
private List<int> _stack;
private int _maxSize;
public CustomStack(int maxSize)
{
_stack = [];
_maxSize = maxSize;
}
public void Push(int x)
{
if (_stack.Count >= _maxSize) return;
_stack.Add(x);
}
public int Pop()
{
if (_stack.Count == 0) return -1;
int ans = _stack[^1];
_stack.RemoveAt(_stack.Count - 1);
return ans;
}
public void Increment(int k, int val)
{
int minLength = int.Min(k, _stack.Count);
for (int i = 0; i < minLength; i++)
{
_stack[i] += val;
}
}
}
public class Solution
{
public List<string> Execute(string[] events, int[][] values)
{
List<string> result = [];
CustomStack stack = new(0);
for (int i = 0; i < events.Length; i++)
{
switch (events[i])
{
case "CustomStack":
stack = new CustomStack(values[i][0]);
result.Add("null");
break;
case "push":
stack.Push(values[i][0]);
result.Add("null");
break;
case "pop":
result.Add(stack.Pop().ToString());
break;
case "increment":
stack.Increment(values[i][0], values[i][1]);
result.Add("null");
break;
}
}
return result;
}
}
/**
* Your CustomStack object will be instantiated and called as such:
* CustomStack obj = new CustomStack(maxSize);
* obj.Push(x);
* int param_2 = obj.Pop();
* obj.Increment(k,val);
*/