-
Notifications
You must be signed in to change notification settings - Fork 199
/
Copy pathProgram.java
44 lines (32 loc) · 809 Bytes
/
Program.java
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
package AlgoExSolutions.Medium.SortStack;
import java.util.*;
/**
* * Sort Stack
*/
class Program {
/**
* * TC: O(n^2)
* * SC: O(n)
*/
public ArrayList<Integer> sortStack(ArrayList<Integer> stack) {
// Write your code here.
if (stack.isEmpty()) return stack;
sort(stack);
return stack;
}
private void sort(ArrayList<Integer> stack) {
if (stack.size() == 1) return;
int poppedValue = stack.remove(stack.size() - 1);
sort(stack);
insert(stack, poppedValue);
}
private void insert(ArrayList<Integer> stack, int value) {
if (stack.isEmpty() || stack.get(stack.size() - 1) <= value) {
stack.add(value);
return;
}
int poppedValue = stack.remove(stack.size() - 1);
insert(stack, value);
stack.add(poppedValue);
}
}