about summary refs log tree commit diff
path: root/deepmind
diff options
context:
space:
mode:
Diffstat (limited to 'deepmind')
-rw-r--r--deepmind/part_one/balanced-binary-tree.py (renamed from deepmind/balanced-binary-tree.py)0
-rw-r--r--deepmind/part_one/dijkstra.py (renamed from deepmind/dijkstra.py)0
-rw-r--r--deepmind/part_one/efficiency.org (renamed from deepmind/efficiency.org)0
-rw-r--r--deepmind/part_one/find-rotation-point.py (renamed from deepmind/find-rotation-point.py)0
-rw-r--r--deepmind/part_one/inflight-entertainment.py (renamed from deepmind/inflight-entertainment.py)0
-rw-r--r--deepmind/part_one/kth-to-last.py (renamed from deepmind/kth-to-last.py)0
-rw-r--r--deepmind/part_one/merging-ranges.py (renamed from deepmind/merging-ranges.py)0
-rw-r--r--deepmind/part_one/recursive-string-permutations.py (renamed from deepmind/recursive-string-permutations.py)0
-rw-r--r--deepmind/part_one/reverse-linked-list.py (renamed from deepmind/reverse-linked-list.py)0
-rw-r--r--deepmind/part_one/stock-price.py (renamed from deepmind/stock-price.py)0
-rw-r--r--deepmind/part_one/which-appears-twice.py (renamed from deepmind/which-appears-twice.py)0
-rw-r--r--deepmind/part_two/delete-node.py57
12 files changed, 57 insertions, 0 deletions
diff --git a/deepmind/balanced-binary-tree.py b/deepmind/part_one/balanced-binary-tree.py
index 7fc174a2a9f3..7fc174a2a9f3 100644
--- a/deepmind/balanced-binary-tree.py
+++ b/deepmind/part_one/balanced-binary-tree.py
diff --git a/deepmind/dijkstra.py b/deepmind/part_one/dijkstra.py
index 6975dbe4d1d6..6975dbe4d1d6 100644
--- a/deepmind/dijkstra.py
+++ b/deepmind/part_one/dijkstra.py
diff --git a/deepmind/efficiency.org b/deepmind/part_one/efficiency.org
index 89a45c52ad8a..89a45c52ad8a 100644
--- a/deepmind/efficiency.org
+++ b/deepmind/part_one/efficiency.org
diff --git a/deepmind/find-rotation-point.py b/deepmind/part_one/find-rotation-point.py
index 5c21d5167ce9..5c21d5167ce9 100644
--- a/deepmind/find-rotation-point.py
+++ b/deepmind/part_one/find-rotation-point.py
diff --git a/deepmind/inflight-entertainment.py b/deepmind/part_one/inflight-entertainment.py
index 2116b27b0b97..2116b27b0b97 100644
--- a/deepmind/inflight-entertainment.py
+++ b/deepmind/part_one/inflight-entertainment.py
diff --git a/deepmind/kth-to-last.py b/deepmind/part_one/kth-to-last.py
index 5335e419f7ec..5335e419f7ec 100644
--- a/deepmind/kth-to-last.py
+++ b/deepmind/part_one/kth-to-last.py
diff --git a/deepmind/merging-ranges.py b/deepmind/part_one/merging-ranges.py
index 23b40793b8f1..23b40793b8f1 100644
--- a/deepmind/merging-ranges.py
+++ b/deepmind/part_one/merging-ranges.py
diff --git a/deepmind/recursive-string-permutations.py b/deepmind/part_one/recursive-string-permutations.py
index f50db2838707..f50db2838707 100644
--- a/deepmind/recursive-string-permutations.py
+++ b/deepmind/part_one/recursive-string-permutations.py
diff --git a/deepmind/reverse-linked-list.py b/deepmind/part_one/reverse-linked-list.py
index 82fac171d5d1..82fac171d5d1 100644
--- a/deepmind/reverse-linked-list.py
+++ b/deepmind/part_one/reverse-linked-list.py
diff --git a/deepmind/stock-price.py b/deepmind/part_one/stock-price.py
index 7055b66af196..7055b66af196 100644
--- a/deepmind/stock-price.py
+++ b/deepmind/part_one/stock-price.py
diff --git a/deepmind/which-appears-twice.py b/deepmind/part_one/which-appears-twice.py
index c01379295d32..c01379295d32 100644
--- a/deepmind/which-appears-twice.py
+++ b/deepmind/part_one/which-appears-twice.py
diff --git a/deepmind/part_two/delete-node.py b/deepmind/part_two/delete-node.py
new file mode 100644
index 000000000000..4ed02ec30832
--- /dev/null
+++ b/deepmind/part_two/delete-node.py
@@ -0,0 +1,57 @@
+import unittest
+
+
+def delete_node(node):
+    if node.next:
+        node.value = node.next.value
+        node.next = node.next.next
+    else:
+        raise Exception(
+            "We cannot delete the last node in a linked list using this function"
+        )
+
+
+# Tests
+class Test(unittest.TestCase):
+    class LinkedListNode(object):
+        def __init__(self, value, next=None):
+            self.value = value
+            self.next = next
+
+        def get_values(self):
+            node = self
+            values = []
+            while node is not None:
+                values.append(node.value)
+                node = node.next
+            return values
+
+    def setUp(self):
+        self.fourth = Test.LinkedListNode(4)
+        self.third = Test.LinkedListNode(3, self.fourth)
+        self.second = Test.LinkedListNode(2, self.third)
+        self.first = Test.LinkedListNode(1, self.second)
+
+    def test_node_at_beginning(self):
+        delete_node(self.first)
+        actual = self.first.get_values()
+        expected = [2, 3, 4]
+        self.assertEqual(actual, expected)
+
+    def test_node_in_middle(self):
+        delete_node(self.second)
+        actual = self.first.get_values()
+        expected = [1, 3, 4]
+        self.assertEqual(actual, expected)
+
+    def test_node_at_end(self):
+        with self.assertRaises(Exception):
+            delete_node(self.fourth)
+
+    def test_one_node_in_list(self):
+        unique = Test.LinkedListNode(1)
+        with self.assertRaises(Exception):
+            delete_node(unique)
+
+
+unittest.main(verbosity=2)