给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。
请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。
示例 1:
输入:nums = [2,5,1,3,4,7], n = 3
输出:[2,3,5,4,1,7]
解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]
示例 2:
输入:nums = [1,2,3,4,4,3,2,1], n = 4
输出:[1,4,2,3,3,2,4,1]
示例 3:
输入:nums = [1,1,2,2], n = 2
输出:[1,2,1,2]
提示:
1 <= n <= 500
nums.length == 2n
1 <= nums[i] <= 10^3
var shuffle = function(nums, n) {
const r = []
for (let i = 0; i < n; i++) {
r.push(nums[i], nums[i + n])
}
return r
};
function shuffle(nums: number[], n: number): number[] {
const r = []
for (let i = 0; i < n; i++) {
r.push(nums[i], nums[i + n])
}
return r
};
class Solution {
function shuffle($nums, $n) {
$r = [];
for ($i = 0; $i < $n; $i++) {
array_push($r, $nums[$i], $nums[$i + $n]);
}
return $r;
}
}
func shuffle(nums []int, n int) []int {
r := []int{}
for i := 0; i < n; i++ {
r = append(r, nums[i], nums[i + n])
}
return r
}
class Solution {
public int[] shuffle(int[] nums, int n) {
List<Integer> r = new ArrayList<Integer>(n << 1);
for (int i = 0; i < n; i++) {
r.add(nums[i]);
r.add(nums[i + n]);
}
return r.stream().mapToInt(i -> i).toArray();
}
}
public class Solution {
public int[] Shuffle(int[] nums, int n) {
List<int> r = new List<int>(n << 1);
for (int i = 0; i < n; i++) {
r.Add(nums[i]);
r.Add(nums[i + n]);
}
return r.ToArray();
}
}
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
vector<int> r;
for (int i = 0; i < n; i++) {
r.push_back(nums[i]);
r.push_back(nums[i + n]);
}
return r;
}
};
class Solution:
def shuffle(self, nums: List[int], n: int) -> List[int]:
r = []
for i in range(n):
r.append(nums[i])
r.append(nums[i + n])
return r
class Solution: # 双重 for 嵌套列表:第二重用列表
def shuffle(self, nums: List[int], n: int) -> List[int]:
return [num for i in range(n) for num in [nums[i], nums[i + n]]]
class Solution: # 双重 for 嵌套列表:第二重用元组
def shuffle(self, nums: List[int], n: int) -> List[int]:
return [num for i in range(n) for num in (nums[i], nums[i + n])]
var shuffle = function(nums, n) {
const r = new Uint16Array(n << 1)
for (let i = j = 0; i < n; i++) {
r[j++] = nums[i]
r[j++] = nums[i + n]
}
return r
};
function shuffle(nums: number[], n: number): number[] {
const r = new Array(n << 1)
for (let i = 0, j = 0; i < n; i++) {
r[j++] = nums[i]
r[j++] = nums[i + n]
}
return r
};
class Solution {
function shuffle($nums, $n) {
$r = array_fill(0, $n << 1, 0);
for ($i = $j = 0; $i < $n; $i++) {
$r[$j++] = $nums[$i];
$r[$j++] = $nums[$i + $n];
}
return $r;
}
}
func shuffle(nums []int, n int) []int {
r := make([]int, n << 1)
for i, j := 0, 0; i < n; i, j = i + 1, j + 2 {
r[j] = nums[i]
r[j + 1] = nums[i + n]
}
return r
}
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] r = new int[n << 1];
for (int i = 0, j = 0; i < n; i++) {
r[j++] = nums[i];
r[j++] = nums[i + n];
}
return r;
}
}
public class Solution {
public int[] Shuffle(int[] nums, int n) {
int[] r = new int[n << 1];
for (int i = 0, j = 0; i < n; i++) {
r[j++] = nums[i];
r[j++] = nums[i + n];
}
return r;
}
}
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int* r = malloc(sizeof(int) * numsSize);
for (int i = 0, j = 0; i < n; i++) {
r[j++] = nums[i];
r[j++] = nums[i + n];
}
*returnSize = numsSize;
return r;
}
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
vector<int> r(n << 1);
for (int i = 0, j = 0; i < n; i++) {
r[j++] = nums[i];
r[j++] = nums[i + n];
}
return r;
}
};
class Solution:
def shuffle(self, nums: List[int], n: int) -> List[int]:
r, j = [0] * (n << 1), 0
for i in range(n):
r[j], r[j + 1] = nums[i], nums[i + n]
j += 2
return r
var shuffle = function(nums, n) {
const r = new Uint16Array(n << 1)
for (let i = 0; i < n; i++) {
r[i << 1] = nums[i]
r[(i << 1) + 1] = nums[i + n]
}
return r
};
function shuffle(nums: number[], n: number): number[] {
const r = new Array(n << 1)
for (let i = 0; i < n; i++) {
r[i << 1] = nums[i]
r[(i << 1) + 1] = nums[i + n]
}
return r
};
class Solution {
function shuffle($nums, $n) {
$r = array_fill(0, $n << 1, 0);
for ($i = 0; $i < $n; $i++) {
$r[$i << 1] = $nums[$i];
$r[($i << 1) + 1] = $nums[$i + $n];
}
return $r;
}
}
func shuffle(nums []int, n int) []int {
r := make([]int, n << 1)
for i := 0; i < n; i++ {
r[i << 1] = nums[i]
r[i << 1 + 1] = nums[i + n]
}
return r
}
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] r = new int[n << 1];
for (int i = 0; i < n; i++) {
r[i << 1] = nums[i];
r[(i << 1) + 1] = nums[i + n];
}
return r;
}
}
public class Solution {
public int[] Shuffle(int[] nums, int n) {
int[] r = new int[n << 1];
for (int i = 0; i < n; i++) {
r[i << 1] = nums[i];
r[(i << 1) + 1] = nums[i + n];
}
return r;
}
}
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int* r = malloc(sizeof(int) * numsSize);
for (int i = 0; i < n; i++) {
r[i << 1] = nums[i];
r[(i << 1) + 1] = nums[i + n];
}
*returnSize = numsSize;
return r;
}
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
vector<int> r(n << 1);
for (int i = 0; i < n; i++) {
r[i << 1] = nums[i];
r[(i << 1) + 1] = nums[i + n];
}
return r;
}
};
class Solution:
def shuffle(self, nums: List[int], n: int) -> List[int]:
r = [0] * (n << 1)
for i in range(n):
r[i << 1], r[(i << 1) + 1] = nums[i], nums[i + n]
return r
1 <= nums[i] <= 10^3
,小于 1024
,即 2
的 10
次方(1 << 10) - 1
,用掩码 &
运算取原值,将运算后的结果存储至前 10 位var shuffle = function(nums, n) {
const mask = (1 << 10) - 1
for (let i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10
}
for (let i = 0; i < n << 1; i++) {
nums[i] >>= 10
}
return nums
};
var shuffle = function(nums, n) {
const mask = (1 << 10) - 1
for (let i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10
}
return nums.map(num => num >> 10)
};
function shuffle(nums: number[], n: number): number[] {
const mask = (1 << 10) - 1
for (let i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10
}
for (let i = 0; i < n << 1; i++) {
nums[i] >>= 10
}
return nums
};
class Solution {
function shuffle($nums, $n) {
$mask = (1 << 10) - 1;
for ($i = 0; $i < $n; $i++) {
$nums[$i << 1] |= ($nums[$i] & $mask) << 10;
$nums[($i << 1) + 1] |= ($nums[$i + $n] & $mask) << 10;
}
foreach($nums as $i => $num) {
$nums[$i] = $num >> 10;
}
return $nums;
}
}
class Solution {
function shuffle($nums, $n) {
$mask = (1 << 10) - 1;
for ($i = 0; $i < $n; $i++) {
$nums[$i << 1] |= ($nums[$i] & $mask) << 10;
$nums[($i << 1) + 1] |= ($nums[$i + $n] & $mask) << 10;
}
return array_map(function($num) {
return $num >>= 10;
}, $nums);
}
}
func shuffle(nums []int, n int) []int {
mask := 1 << 10 - 1
for i := 0; i < n; i++ {
nums[i << 1] |= nums[i] & mask << 10
nums[i << 1 + 1] |= nums[i + n] & mask << 10
}
for i, _ := range nums {
nums[i] >>= 10
}
return nums
}
class Solution {
public int[] shuffle(int[] nums, int n) {
int mask = (1 << 10) - 1;
for (int i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10;
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10;
}
for (int i = 0; i < n << 1; i++) {
nums[i] >>= 10;
}
return nums;
}
}
public class Solution {
public int[] Shuffle(int[] nums, int n) {
int mask = (1 << 10) - 1;
for (int i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10;
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10;
}
for (int i = 0; i < n << 1; i++) {
nums[i] >>= 10;
}
return nums;
}
}
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int mask = (1 << 10) - 1;
for (int i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10;
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10;
}
for (int i = 0; i < numsSize; i++) {
nums[i] >>= 10;
}
*returnSize = numsSize;
return nums;
}
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
int mask = (1 << 10) - 1;
for (int i = 0; i < n; i++) {
nums[i << 1] |= (nums[i] & mask) << 10;
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10;
}
for (int i = 0; i < n << 1; i++) {
nums[i] >>= 10;
}
return nums;
}
};
class Solution:
def shuffle(self, nums: List[int], n: int) -> List[int]:
mask = (1 << 10) - 1
for i in range(n):
nums[i << 1] |= (nums[i] & mask) << 10
nums[(i << 1) + 1] |= (nums[i + n] & mask) << 10
for i in range(n << 1):
nums[i] >>= 10
return nums