题目链接:
https://leetcode-cn.com/problems/shuffle-the-array/
我的答案:
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] newnums =new int[nums.length];
int count=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < nums.length; j++) {
if(j%n==i) {
newnums[count]=nums[j];
count++;
}
}
}
return newnums;
}
}
题解:
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] newnums =new int[nums.length];
int index=0;
for (int i = 0; i< n; i++) {
newnums[index++]=nums[i];
newnums[index++]=nums[n+i];
}
return newnums;
}
}
总结:我忽略了nums.length==2n 原题是只分成了两组,我以为是分成任意组。于是用了两重循环,外循环控制模除的值,内循环遍历所有值,分别筛选下标模除n的结果为0到n-1的数放进新数组,如果分为3组,那么一次内循环就增加3个值。复杂度O(n²)题解只遍历了一次,因为他知道只会分为两组。复杂度O(n)。
网友评论