Python的两种解法:
翻转三次
-
[6, 5, 4, 3, 2, 1] # 翻转全部
-
[5, 6, 4, 3, 2, 1] # 再翻转 【0,m-1】
-
[5, 6, 1, 2, 3, 4] # 再翻转 【m,n-1】
class Solution:
def solve(self , n: int, m: int, a: List[int]) -> List[int]:
# write code here
m = m % n
# 翻转全部
self.reverse(a, 0, n-1)
# 再翻转 【0,m-1】
self.reverse(a, 0, m-1)
# 再翻转 【m,n-1】
self.reverse(a, m, n-1)
return a
def reverse(self, nums, left, right):
while left <= right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
语法糖解法:
class Solution:
def solve(self , n: int, m: int, a: List[int]) -> List[int]:
# write code here
m = m % n
return a[-m:] + a[:-m]