196 字
1 分钟
LeetCode-189.轮转数组
数组
给定一个整数数组
nums,将数组中的元素向右轮转k个位置,其中k是非负数。
示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:
输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]
暴力法
老是忘记append要+…
func rotate(nums []int, k int) { n := len(nums) l := n - k % n
temp := append(nums[l:], nums[:l]...) copy(nums, temp)}一个神奇的翻转三次的方法
评论区卧虎藏龙啊🤔
func rotate(nums []int, k int) { n := len(nums) k %= n
reverse(nums) reverse(nums[:k]) reverse(nums[k:])}
func reverse(a []int) { left, right := 0, len(a)-1 for left < right { a[left], a[right] = a[right], a[left] left++ right-- }} LeetCode-189.轮转数组
https://sheep44044.github.io/posts/算法/数组/leetcode-189轮转数组/