Skip to content

Commit 163b615

Browse files
committed
Add input validation to cyclic_sort
1 parent 6379ae3 commit 163b615

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

sorts/cyclic_sort.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,31 @@ def cyclic_sort(nums: list[int]) -> list[int]:
2727
[]
2828
>>> cyclic_sort([3, 5, 2, 1, 4])
2929
[1, 2, 3, 4, 5]
30+
>>> cyclic_sort([1, 2, 5])
31+
32+
Traceback (most recent call last):
33+
...
34+
ValueError: All numbers must be in range 1 to 3, got 5
35+
36+
>>> cyclic_sort([1, 2, 2])
37+
Traceback (most recent call last):
38+
...
39+
ValueError: All numbers must be unique, got [1, 2, 2]
3040
"""
31-
# Input validation
41+
# Input validation
3242
seen = set()
43+
n = len(nums)
3344

34-
for i in range(len(nums)):
35-
if nums[i] in seen:
36-
raise ValueError("All numbers must be unique, got [7, 3, 2, 3, 54, 5, 4]")
45+
for num in nums:
46+
if num in seen:
47+
raise ValueError(f"All numbers must be unique, got {nums}")
3748

38-
elif nums[i] < 1 or nums[i] > len(nums):
39-
raise ValueError("All numbers must be in range 1 to 3, got 5")
49+
if num < 1 or num > n:
50+
raise ValueError(
51+
f"All numbers must be in range 1 to {n}, got {num}"
52+
)
4053

41-
else:
42-
seen.add(nums[i])
54+
seen.add(num)
4355

4456

4557
# Perform cyclic sort

0 commit comments

Comments
 (0)