| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package main
 
- func rotate1st(nums []int, k int) {
 
- 	n := len(nums)
 
- 	k %= n
 
- 	tmp := append(nums[n-k:], nums[:n-k]...)
 
- 	copy(nums, tmp)
 
- }
 
- func rotate2nd(nums []int, k int) {
 
- 	tmp := make([]int, len(nums))
 
- 	copy(tmp, nums)
 
- 	n := len(nums)
 
- 	for i, v := range tmp {
 
- 		idx := (i + k) % n
 
- 		nums[idx] = v
 
- 	}
 
- }
 
- func rotate3rd(nums []int, k int) {
 
- 	n := len(nums)
 
- 	k %= n
 
- 	// [1 2 3] -> [3 2 1]
 
- 	for i, j := 0, n-k-1; i < j; i, j = i+1, j-1 {
 
- 		nums[i], nums[j] = nums[j], nums[i]
 
- 	}
 
- 	// [4 5 6 7] -> [7 6 5 4]
 
- 	for i, j := n-k, n-1; i < j; i, j = i+1, j-1 {
 
- 		nums[i], nums[j] = nums[j], nums[i]
 
- 	}
 
- 	// [3 2 1 7 6 5 4] -> [4 5 6 7 1 2 3]
 
- 	for i, j := 0, n-1; i < j; i, j = i+1, j-1 {
 
- 		nums[i], nums[j] = nums[j], nums[i]
 
- 	}
 
- }
 
- // func main() {
 
- // 	arr := []int{1, 2, 3, 4, 5, 6, 7}
 
- // 	rotate1st(arr, 4)
 
- // 	fmt.Println(arr)
 
- // }
 
 
  |