u
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user