Giả sử chúng ta có một mảng A. Chúng ta phải xoay nó k bước. Vì vậy, nếu mảng là A =[5, 7, 3, 6, 8, 1, 5, 4] và k =3, thì đầu ra sẽ là [1,5,4,5,7,3,6, số 8]. Các bước giống như
- [4,5,7,3,6,8,1,5]
- [5,4,5,7,3,6,8,1]
- [1,5,4,5,7,3,6,8]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau.
- đặt n là kích thước của mảng
- k =k mod n
- A =mảng con của A từ n - k đến cuối + mảng con của A từ 0 đến n - k - 1
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -
Ví dụ
class Solution(object): def rotate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: None Do not return anything, modify nums in-place instead. """ n = len(nums) k%=n nums[:] = nums[n-k:]+nums[:n-k] nums = [5,7,3,6,8,1,5,4] ob1 = Solution() ob1.rotate(nums, 3) print(nums)
Đầu vào
nums = [5,7,3,6,8,1,5,4] k = 3
Đầu ra
[1,5,4,5,7,3,6,8]