重新排列数组
一、题目描述
给定一个数组nums,元素个数为2n,给数组排序。按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列
请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重新排好的数组。
实例
输入: nums = [3,1,2,6,4,5] n=3
输出:nums = [1,6,1,4,2,5]
二、题目分析
可以发现数组的长度是2n。可以将数组分成两个长度为n的数组。就可以看成长度0-n 和 n-2n 两个数组。
三、解题思路
发现了这个规律,就可以常创建一个新的数组ns,将原来数组分成新的两个数组n1和n2,并开始将原来数组中的元素添加进新创建的数组中。这里可以发现n1里面的元素总在ns中的偶数(2n)个索引处,n2数组中元素总在奇数(2n+1或2n-1)索引中;
代码实现
public int[] shuffle(int[] nums, int n) {
int [] num = new int[2*n];
for(int i=0;i<n;i++){
num[2*i] = nums[i];
num[2*i+1] = nums[n+i];
}
return num;
}
}
标签:...,重新排列,nums,int,数组,2n
From: https://www.cnblogs.com/zjjtt/p/16637721.html