Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΌΠ°ΡΡΠΈΠ²Π° β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ.
ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΠΎΠ΄Π°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ² A ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ K. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° K ΡΠ°Π· ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΠΌΠ°ΡΡΠΈΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ :
A = [2, 5, 1, 4, 6]
K = 3
Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΡΠΈΠΆΠ΄Ρ:
[2, 5, 1, 4, 6] -> [6, 2, 5, 1, 4]
[6, 2, 5, 1, 4] -> [4, 6, 2, 5, 1]
[4, 6, 2, 5, 1] -> [1, 4, 6, 2, 5]
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ
[1, 4, 6, 2, 5]
ΠΡΠ»ΠΈ
K = 0
, ΡΠΎ ΡΠ΄Π²ΠΈΠ³ Π½Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ.ΠΠ»Ρ
K = 5:
[2, 5, 1, 4, 6] -> [2, 5, 1, 4, 6]
ΠΠ°ΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
1. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·.
2. ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ K ΡΠ°Π·.
def rotate(A, K):
""" Rotates a list K times """
if not A:
return []
for i in range(K):
A = rotate_once(A)
return A
def rotate_once(A):
""" Rotates a list once """
A.insert(0, A[-1])
del A[-1]
return A
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ insert()
ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΎ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ len(A
) ΡΠΎΡΠ°ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ½Π΄Π΅ΠΊΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π½ΠΎΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ:
def rotate(A, K):
""" Rotates a list K times """
result = []
if K == 0:
return A
else:
for i in range(len(A)):
new_index = (i - K) % len(A)
result.append(A[new_index])
return result
ΠΡΠΎ Π»ΡΡΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
βͺ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ ΠΎΠ΄
βͺ ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ K.
@python_job_interview