給你乙個陣列 nums ,陣列中有 2n 個元素,按 [x1,x2,…,xn,y1,y2,…,yn]的格式排列。請你將陣列按 [x1,y1,x2,y2,…,xn,yn]格式重新排列,返回重排
後的陣列。
輸入: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]
tips:1 <= n <= 500
nums.length == 2n
1 <= nums[i] <= 10^3
思路:可以遍歷整個陣列,固定i,一直不斷找到確定的nums[j],知道i = j ,這時候nums[i]也固定了,固定的數都是負數,所以不會錯亂
address
from typing import list
# 一種比較巧妙的方法,陣列原地交換
defshuffle
(nums: list[
int]
, n:
int)
-> list[
int]
: desire_id =
lambda i: i *
2if i < n else
(i - n)*2
+1for i in
range(2
*n):
j = i
while nums[i]
>=0:
j = desire_id(j)
nums[i]
, nums[j]
= nums[j]
,-nums[i]
for i in
range(2
*n):
nums[i]
=-nums[i]
return nums
if __name__ ==
'__main__'
: nums =[2
,5,1
,3,4
,7] n =
3print
(shuffle(nums, n)
)
LeetCode 按奇偶排序陣列
給定乙個非負整數陣列a,返回乙個由a的所有偶數元素組成的陣列,後面跟a的所有奇數元素。你可以返回滿足此條件的任何陣列作為答案。示例 輸入 3,1,2,4 輸出 2,4,3,1 輸出 4,2,3,1 2,4,1,3 和 4,2,1,3 也會被接受。1 a.length 50000 a i 5000cl...
Leetcode 按奇偶排序陣列
給定乙個非負整數陣列a,返回乙個由a的所有偶數元素組成的陣列,後面跟a的所有奇數元素。你可以返回滿足此條件的任何陣列作為答案。示例 輸入 3,1,2,4 輸出 2,4,3,1 輸出 4,2,3,1 2,4,1,3 和 4,2,1,3 也會被接受。1 a.length 50000 a i 5000in...
Leetcode 搜尋旋轉排序陣列
假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...