Cho một danh sách số nguyên. Đếm số lượng số có số chữ số là số chẵn. Ví dụ: [12, 345, 2, 6, 7896] → kết quả 2 (12 có 2 chữ số, 7896 có 4 chữ số).
Thuật toán
- Chuyển mỗi số thành chuỗi
- Kiểm tra độ dài chuỗi: nếu chẵn thì tăng đếm
- Trả về tổng đếm
Ví dụ (Python)
class Solution(object):
def findNumbers(self, nums):
str_num = map(str, nums)
count = 0
for s in str_num:
if len(s) % 2 == 0:
count += 1
return count
ob1 = Solution()
print(ob1.findNumbers([12, 345, 2, 6, 7897])) # Output: 2
Cách khác (không dùng string)
import math
def findNumbers(nums):
count = 0
for num in nums:
if num == 0:
digits = 1
else:
digits = int(math.log10(abs(num))) + 1
if digits % 2 == 0:
count += 1
return count
Độ phức tạp
- Thời gian:
O(n * d)(d = số chữ số trung bình) hoặcO(n)với log10 - Không gian:
O(1)(không tính input)
Đầu vào / Đầu ra
Input: [12, 345, 2, 6, 7897] Output: 2