原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/x2skh7/
解法一(java):
class Solution {
public void rotate(int[] nums, int k) {
int length = nums.length;
if (length < k ) {
k = k % length;
}
int[] left = new int[k];
int[] right = new int[length - k];
for (int i = 0; i < length; i++) {
if (i < right.length) {
right[i] = nums[i];
} else {
left[i-right.length] = nums[i];
}
}
for (int i = 0 ; i < left.length ; i++) {
nums[i] = left[i];
}
for (int i = 0 ; i < right.length ; i++) {
nums[left.length+i] = right[i];
}
}
}
思路:将数组拆分为两部分,按平移的数据,将左边和右边的数据分离出来,在将两边的数据合并到原来的数据中即可
2023-06-23 start
解法二(go):
func rotate(nums []int, k int) {
length := len(nums)
if length < k {
k = k % length
}
left := make([]int,k)
right := make([]int,length-k)
for i := 0 ; i < length; i++ {
if i < len(right) {
right[i] = nums[i]
} else {
left[i-len(right)] = nums[i]
}
}
for i := 0; i < len(left); i++ {
nums[i] = left[i]
}
for i := 0; i< len(right); i++ {
nums[i+len(left)] = right[i]
}
}
思路:(同解法一)将数组拆分为两部分,按平移的数据,将左边和右边的数据分离出来,在将两边的数据合并到原来的数据中即可
end