数组
题目描述
给你一个数组 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
解法
方法一
Python3 Java C++ Go TypeScript Rust C
class Solution :
def shuffle ( self , nums : List [ int ], n : int ) -> List [ int ]:
ans = []
for i in range ( n ):
ans . append ( nums [ i ])
ans . append ( nums [ i + n ])
return ans
class Solution {
public int [] shuffle ( int [] nums , int n ) {
int [] ans = new int [ n << 1 ] ;
for ( int i = 0 , j = 0 ; i < n ; ++ i ) {
ans [ j ++] = nums [ i ] ;
ans [ j ++] = nums [ i + n ] ;
}
return ans ;
}
}
class Solution {
public :
vector < int > shuffle ( vector < int >& nums , int n ) {
vector < int > ans ;
for ( int i = 0 ; i < n ; ++ i ) {
ans . push_back ( nums [ i ]);
ans . push_back ( nums [ i + n ]);
}
return ans ;
}
};
func shuffle ( nums [] int , n int ) [] int {
var ans [] int
for i := 0 ; i < n ; i ++ {
ans = append ( ans , nums [ i ])
ans = append ( ans , nums [ i + n ])
}
return ans
}
function shuffle ( nums : number [], n : number ) : number [] {
let ans = [];
for ( let i = 0 ; i < n ; i ++ ) {
ans . push ( nums [ i ], nums [ n + i ]);
}
return ans ;
}
impl Solution {
pub fn shuffle ( nums : Vec < i32 > , n : i32 ) -> Vec < i32 > {
let n = n as usize ;
let mut res = Vec :: new ();
for i in 0 .. n {
res . push ( nums [ i ]);
res . push ( nums [ n + i ]);
}
res
}
}
1
2
3
4
5
6
7
8
9
10
11
12 /**
* Note: The returned array must be malloced, assume caller calls free().
*/
int * shuffle ( int * nums , int numsSize , int n , int * returnSize ) {
int * res = ( int * ) malloc ( sizeof ( int ) * n * 2 );
for ( int i = 0 ; i < n ; i ++ ) {
res [ 2 * i ] = nums [ i ];
res [ 2 * i + 1 ] = nums [ i + n ];
}
* returnSize = n * 2 ;
return res ;
}
方法二