KaiquanMah commited on
Commit
e0149bd
·
verified ·
1 Parent(s): 1c011b1

Collections.min/max, THEN go through list to find secondSmallest

Browse files
Week 3: Objects, files and exceptions/5b. Second smallest without side effects ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Write the method
2
+
3
+ int secondSmallest(ArrayList<Integer> numbers)
4
+
5
+ ...which returns the second smallest element in the list.
6
+ The method must not change the order of the elements in the list.
7
+
8
+ Example method call:
9
+ public static void main(String[] parameters){
10
+ ArrayList<Integer> numbers = new ArrayList<>();
11
+ numbers.add(5);
12
+ numbers.add(1);
13
+ numbers.add(8);
14
+ numbers.add(3);
15
+ numbers.add(7);
16
+
17
+ System.out.println("List before: " + numbers);
18
+ System.out.println("Second smallest: " + secondSmallest(numbers));
19
+ System.out.println("List after: " + numbers);
20
+ }
21
+
22
+ Program outputs:
23
+ List before: [5, 1, 8, 3, 7]
24
+ Second smallest: 3
25
+ List after: [5, 1, 8, 3, 7]
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+ import java.util.Random;
35
+ import java.util.ArrayList;
36
+ import java.util.Collections;
37
+
38
+ public class Test{
39
+ public static void main(String[] args){
40
+ final Random r = new Random();
41
+
42
+
43
+ int[][] s = {{3,2,1,4}, {10,20,40,50,30,60}, {9,7,5,3,8,6,4,2}, {25,5,20,15,10}};
44
+
45
+ for (int[] pa : s) {
46
+ ArrayList<Integer> lista = new ArrayList<>();
47
+ for (int l : pa) lista.add(l);
48
+
49
+ System.out.println("List before: ");
50
+ System.out.println("" + lista);
51
+ System.out.println("Second smallest: " + secondSmallest(lista));
52
+ System.out.println("List after: ");
53
+ System.out.println(lista);
54
+ System.out.println("");
55
+
56
+ }
57
+ }
58
+
59
+
60
+ //ADD
61
+ public static int secondSmallest(ArrayList<Integer> numbers){
62
+ int smallest = Collections.min(numbers);
63
+ int secondSmallest = Collections.max(numbers);
64
+ for (int i : numbers) {
65
+ if (i > smallest && i < secondSmallest) {
66
+ secondSmallest = i;
67
+ }
68
+ }
69
+ return secondSmallest;
70
+ }
71
+
72
+
73
+
74
+
75
+
76
+ }
77
+
78
+
79
+
80
+
81
+
82
+ List before:
83
+ [3, 2, 1, 4]
84
+ Second smallest: 2
85
+ List after:
86
+ [3, 2, 1, 4]
87
+
88
+ List before:
89
+ [10, 20, 40, 50, 30, 60]
90
+ Second smallest: 20
91
+ List after:
92
+ [10, 20, 40, 50, 30, 60]
93
+
94
+ List before:
95
+ [9, 7, 5, 3, 8, 6, 4, 2]
96
+ Second smallest: 3
97
+ List after:
98
+ [9, 7, 5, 3, 8, 6, 4, 2]
99
+
100
+ List before:
101
+ [25, 5, 20, 15, 10]
102
+ Second smallest: 10
103
+ List after:
104
+ [25, 5, 20, 15, 10]
105
+
106
+