Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หมุนอาร์เรย์ใน Python

สมมติว่าเรามีอาร์เรย์ 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]