สมมติว่าเรามีอาร์เรย์ A เราต้องหมุนไปทางขวา k ขั้นตอน ดังนั้นหากอาร์เรย์คือ A =[5, 7, 3, 6, 8, 1, 5, 4] และ k =3 ผลลัพธ์จะเป็น [1,5,4,5,7,3,6, 8]. ขั้นตอนเป็นเหมือน
- [4,5,7,3,6,8,1,5]
- [5,4,5,7,3,6,8,1]
- [1,5,4,5,7,3,6,8]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้
- ให้ n คือขนาดของอาร์เรย์
- k =k mod n
- A =อาร์เรย์ย่อยของ A จาก n – k ถึงปลาย + อาร์เรย์ย่อยของ A ตั้งแต่ 0 ถึง n – k – 1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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)
อินพุต
nums = [5,7,3,6,8,1,5,4] k = 3
ผลลัพธ์
[1,5,4,5,7,3,6,8]