Skip to content

Commit 9d7f6ea

Browse files
python: add problem 24,27 and unittest
1 parent 05db9d3 commit 9d7f6ea

File tree

4 files changed

+95
-0
lines changed

4 files changed

+95
-0
lines changed

Python/common_utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# -*- coding: utf-8 -*
2+
class ListNode:
3+
def __init__(self, x):
4+
self.val = x
5+
self.next = None
6+
7+
8+
def print_linked_list(head):
9+
node = head
10+
s = ''
11+
while node:
12+
s += str(node.val)
13+
if node.next:
14+
s += '->'
15+
node = node.next
16+
print(s)

Python/sln_1_100/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# -*- coding: utf-8 -*-

Python/sln_1_100/solution_21_30.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# -*- coding: utf-8 -*-
2+
from common_utils import ListNode
3+
4+
5+
class Solution_21_30(object):
6+
def swapPairs(self, head):
7+
"""
8+
24
9+
:param head:
10+
:return:
11+
"""
12+
if not head or not head.next:
13+
return head
14+
prev_node = node = head
15+
is_start = True
16+
while node:
17+
if not node.next:
18+
break
19+
next_node = node.next
20+
node.next = next_node.next
21+
22+
next_node.next = node
23+
24+
if is_start:
25+
head = next_node
26+
is_start = False
27+
else:
28+
prev_node.next = next_node
29+
prev_node = node
30+
node = node.next
31+
32+
return head
33+
34+
def removeElement(self, nums, val):
35+
"""
36+
27
37+
:type nums: List[int]
38+
:type val: int
39+
:rtype: int
40+
"""
41+
count = index = 0
42+
original_nums_len = nums_len = len(nums)
43+
while index < nums_len:
44+
if nums[index] == val:
45+
nums.pop(index)
46+
count += 1
47+
nums_len -= 1
48+
else:
49+
index += 1
50+
51+
return original_nums_len - count
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# -*- coding: utf-8 -*-
2+
from unittest import TestCase
3+
from sln_1_100.solution_21_30 import Solution_21_30
4+
from common_utils import ListNode, print_linked_list
5+
6+
7+
class TestSolution_21_30(TestCase):
8+
def setUp(self):
9+
self.sln = Solution_21_30()
10+
11+
def test_swapPairs(self):
12+
node1 = ListNode(1)
13+
node2 = ListNode(2)
14+
node1.next = node2
15+
node3 = ListNode(3)
16+
node2.next = node3
17+
node4 = ListNode(4)
18+
node3.next = node4
19+
print_linked_list(node1)
20+
# node = self.sln.swapPairs(node1)
21+
node = self.sln.swapPairs(node2)
22+
print_linked_list(node)
23+
24+
def test_removeElement(self):
25+
ret = self.sln.removeElement([1, 2, 2, 3, 4, 5], 2)
26+
self.assertEqual(ret, 2)
27+
ret2 = self.sln.removeElement([1], 1)

0 commit comments

Comments
 (0)