Cho danh sách nums độ dài n+1 chứa các số từ 1 đến n. Theo nguyên lý cái bồ câu, chắc chắn có ít nhất một số trùng. Tìm số đó.
Ví dụ
Đầu vào: [2, 1, 4, 3, 3].
Đầu ra: 3.
Thuật toán
- Tính tổng lý thuyết của 1..n:
temp = n*(n+1)/2(vớin = len(nums)-1). - Tính tổng thực tế
temp_sum = sum(nums). - Trả về
temp_sum - temp.
Mã nguồn Python
class Solution:
def solve(self, nums):
l = len(nums)
temp = l*(l-1)//2
temp_sum = sum(nums)
return temp_sum - temp
ob = Solution()
print(ob.solve([2, 1, 4, 3, 3]))
Đầu vào / Đầu ra
Input: [2, 1, 4, 3, 3]
Output: 3