Skip to content

Commit 47d99dd

Browse files
committed
easy peasy lemon squeezy
1 parent 065e6b2 commit 47d99dd

File tree

2 files changed

+71
-8
lines changed

2 files changed

+71
-8
lines changed

app/src/main/java/assignment/App.java

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,67 @@
33
public class App {
44

55
public static int get(LinkedList list, int index) {
6-
return 0;
7-
}
6+
LinkedList.Node item = list.head; // O(1)
7+
for (int i = 0; i < index; i++) { // O(n)
8+
item = item.next; // O(1)
9+
}
10+
return item.data; // O(1)
11+
} // Algorithmic Complexity = O(n)
812

9-
public static void set(LinkedList list, int index, int value) {}
13+
public static void set(LinkedList list, int index, int value) {
14+
LinkedList.Node item = list.head; // O(1)
15+
for (int i = 0; i < index; i++) { // O(n)
16+
item = item.next; // O(1)
17+
}
18+
item.data = value; // O(1)
19+
} // Algorithmic Complexity = O(n)
1020

11-
public static void remove(LinkedList list, int index) {}
21+
public static void remove(LinkedList list, int index) {
22+
23+
LinkedList.Node item = list.head; // O(1)
24+
if (index == 0) { // O(1)
25+
list.head = list.head.next; // O(1)
26+
}
27+
for (int i = 0; i < index - 1; i++) { // O(n)
28+
item = item.next; // O(1)
29+
}
30+
if (item.next.next == null) { // O(1)
31+
item.next = null; // O(1)
32+
} else { // O(1)
33+
item.next = item.next.next; // O(1)
34+
}
35+
} // Algorithmic Complexity = O(n)
1236

1337
public static LinkedList reverse(LinkedList list) {
14-
return list;
15-
}
38+
LinkedList reversedList = new LinkedList(); // O(1)
39+
LinkedList.Node item = list.head; // O(1)
40+
41+
for (int i = 0; i < list.length(); i++) { // O(n)
42+
reversedList.prepend(item.data); // O(1)
43+
item = item.next; // O(1)
44+
}
45+
return reversedList; // O(1)
46+
} // Algorithmic Complexity = O(n)
1647

1748
public static boolean isSortedAscending(LinkedList list) {
18-
return false;
19-
}
49+
LinkedList.Node item = list.head; // O(1)
50+
while (item.next != null) { // O(n)
51+
if (item.data < item.next.data) { // O(1)
52+
item = item.next; // O(1)
53+
} else { // O(1)
54+
return false; // O(1)
55+
}
56+
}
57+
return true; // O(1)
58+
} // Algorithmic Complexity = O(n)
59+
60+
// Linked List practice
61+
// Write .get
62+
// Write .set
63+
// Write method to delete index
64+
// Reverse linked list
65+
// Is linked list sorted?
66+
// Find algorithmic complexity of each solution
2067

2168
private App() {}
2269
}

app/src/test/java/assignment/AppTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,18 @@ void testRemove() {
4242
assertEquals(3, list.head.next.data);
4343
}
4444

45+
@Test
46+
void testRemoveIndex0() {
47+
var list = new LinkedList();
48+
list.append(1);
49+
list.append(2);
50+
list.append(3);
51+
App.remove(list, 0);
52+
53+
assertEquals(2, list.head.data);
54+
assertEquals(3, list.head.next.data);
55+
}
56+
4557
@Test
4658
void testReverse() {
4759
var list = new LinkedList();
@@ -50,6 +62,10 @@ void testReverse() {
5062
list.append(3);
5163
var reversed = App.reverse(list);
5264

65+
System.out.println(reversed.head.data);
66+
System.out.println(reversed.head.next.data);
67+
System.out.println(reversed.head.next.next.data);
68+
5369
assertEquals(3, reversed.head.data);
5470
assertEquals(2, reversed.head.next.data);
5571
assertEquals(1, reversed.head.next.next.data);

0 commit comments

Comments
 (0)