Menu
CoddyTech

Rotate Array

Bạn nhận được một mảng số nguyên nums và một số k. Xoay mảng sang phải k bước: mỗi bước, mọi giá trị dịch sang phải một vị trí, còn giá trị cuối cùng chuyển về đầu mảng. Trả về mảng sau khi xoay.

k có thể lớn hơn nhiều so với độ dài của mảng.

Hàm

rotate(nums: integer-array, k: integer) → integer-array
numsinteger-array
mảng (array) số nguyên cần xoay
kinteger
cần xoay sang phải bao nhiêu bước
Trả vềinteger-array
các số được xoay sang phải k bước

Ràng buộc

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • 0 ≤ k ≤ 109

Ví dụ

Đầu vào
nums = [4, 9, 1, 6, 3]k = 2
Đầu ra
[6, 3, 4, 9, 1]
Giải thích
Hai bước sang phải đưa hai giá trị cuối cùng, 6 và 3, lên đầu. Ba giá trị còn lại dịch sang phải hai vị trí và giữ nguyên thứ tự: [6, 3, 4, 9, 1].
challenge icon

Câu hỏi mở rộng

Bạn có thể xoay tại chỗ bằng cách chuyển từng giá trị thẳng đến (i + k) mod n và tiếp tục di chuyển giá trị bị thay thế không? Cách đó tạo ra bao nhiêu chu kỳ?

Đặt lại code
def rotate(nums, k):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [4, 9, 1, 6, 3]
k = 2

Đầu ra mong đợi

[6, 3, 4, 9, 1]