[LeetCode] 1470. Shuffle the Array

Given the array nums consisting of 2n elements in the form [x1,x2,...,xn,y1,y2,...,yn].

Return the array in the form [x1,y1,x2,y2,...,xn,yn].

Example 1:

Input: nums = [2,5,1,3,4,7], n = 3
Output: [2,3,5,4,1,7] 
Explanation: Since x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 then the answer is [2,3,5,4,1,7].

Example 2:

Input: nums = [1,2,3,4,4,3,2,1], n = 4
Output: [1,4,2,3,3,2,4,1]

Example 3:

Input: nums = [1,1,2,2], n = 2
Output: [1,2,1,2]

Constraints:

  • 1 <= n <= 500
  • nums.length == 2n
  • 1 <= nums[i] <= 10^3

重新排列数组。

给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。

请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shuffle-the-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题我感觉是在考察一个人对于数组 index 之间发生倍数关系是否敏感。题目说数组的长度是 2n,那么数组的长度一定是偶数,所以遍历的时候只要遍历原数组长度的一半即可。而且题目虽然给了变量 n,但是其实用不上,因为 n = len / 2。

时间O(n)

空间O(n)

Java实现

class Solution {
    public int[] shuffle(int[] nums, int n) {
        int len = nums.length;
        int[] res = new int[len];
        for (int i = 0; i < len / 2; i++) {
            res[2 * i] = nums[i];
            res[2 * i + 1] = nums[i + len / 2];
        }
        return res;
    }
}

 

LeetCode 题目总结

posted @ 2022-08-29 14:19  CNoodle  阅读(106)  评论(0编辑  收藏  举报