Files
leetcode/top-100-liked/15_test.go
T
2026-06-01 03:33:34 +10:00

59 lines
1.1 KiB
Go

package top100liked
import (
"fmt"
"slices"
"testing"
)
// https://leetcode.cn/problems/rotate-array/description/?envType=study-plan-v2&envId=top-100-liked
func rotate(nums []int, k int) {
if k == 0 {
return
}
n := len(nums)
slices.Reverse(nums)
slices.Reverse(nums[:k%n])
slices.Reverse(nums[k%n:])
}
// func rotate(nums []int, k int) {
// n := len(nums)
// k = k % n
// if k == 0 {
// return
// }
// count := 0 // 已经处理了多少个元素
// for start := 0; count < n; start++ {
// current := start
// prev := nums[start] // 暂存起点元素
// // 沿着环跳动
// for {
// next := (current + k) % n
// // 把 prev 放到 next 位置,同时保存 next 原来的值作为新的 prev
// nums[next], prev = prev, nums[next]
// current = next
// count++
// if current == start {
// break // 回到起点,这条环走完了
// }
// }
// }
// }
func TestS15(t *testing.T) {
input := []int{1, 2, 3, 4, 5, 6, 7}
rotate(input, 3)
fmt.Printf("%+v\n", input)
input = []int{-1, -100, 3, 99}
rotate(input, 2)
fmt.Printf("%+v\n", input)
input = []int{-1}
rotate(input, 2)
fmt.Printf("%+v\n", input)
}