重新排列数组

重新排列数组

一、题目描述

给定一个数组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;
    }
}
posted @ 2022-08-29 22:59  z_coding  阅读(83)  评论(0)    收藏  举报