Cho một số nguyên dương n
và một số nguyên k (k >= 0)
. Hãy tìm tất cả các số x
có n
chữ số và các chữ số liền kề trong x
cách nhau đúng k
đơn vị (không có số 0 vô nghĩa ở đầu như 01). Các kết quả trả về lưu vào một mảng được sắp xếp tăng dần.
Ví dụ:
-
Với
n = 3, k = 7
. Đầu racreateNumber(n,k) = [181,292,707,818,929]
.Giải thích: Đối với số 181 thì số 1 ở vị trí 1 và số 8 ở vị trí 2 cách nhau 7 đơn vị, số 8 ở vị trí 2 và số 1 ở vị trí 3 cách nhau 7 đơn vị
Đầu vào/Đầu ra:
-
[Đầu vào] Integer n, k .
1 <= n <= 9
0 <= k <= 9
-
[Đầu ra] Array Of Integers
Số lượng số thỏa mãn đã được sắp xếp tăng dần
Đây là cách làm của mình:
def hieu_cac_so(x):
for i in range(len(x)-1):
if i==0: ss1=abs(int(x[i])-int(x[i+1]))#
ss2=abs(int(x[i])-int(x[i+1]))
if ss2!=ss1: return -1
return ss2
def createNumber(n,k):
lst=[]
for i in range(10**(n-1),10**n):
if hieu_cac_so(str(i))==k:
lst.append(int(i))
return lst
Mọi người cho mình hỏi có cách nào hay hơn cách này không chứ mình chấm điểm bị sai mấy trường hợp test ẩn (chấm trên máy). Cảm ơn mọi người nhiều