Я пытаюсь решить проблему 189 на leetcode
Вопрос:
Для данного массива поверните массив вправо на k шагов где k неотрицательно.
В соответствии с решением, я попытался реализовать идею, изложенную в подходе 2: с помощью «дополнительного» массива. Тем не менее, я не могу получить желаемый результат. В чем проблема с этим кодом?
Я тоже пробовал использовать метод грубой силы, но он там не принят, поэтому пробую это !! Буду признателен за любую помощь!
i = 0
l = len(nums)
arr = [0]*l
while i < len(nums):
split = l-k
if i >=0 and i < split:
arr[i+k] = nums[i]
if i >= k+1 and i < l:
arr[i-k-1] = nums[i]
i+=1
nums = [0]*l
for a in range(0,l):
nums[a] = arr[a]
print(arr)
print(nums)
Получив некоторую помощь, я попробовал использовать подход среза (как предложено в комментариях), и вот код, который я мог бы придумать:
l = len(nums)
a = nums[:l-k] # appending part
nums = nums[l-k:] # real array
for i in a:
nums.append(i)
print(nums)
Тем не менее, это не работает на этом сайте. Я получаю правильный выходной массив, но не совсем то, что требуется.