leetcode重新排序陣列 1470

2021-10-08 21:40:38 字數 1212 閱讀 9613

給你乙個陣列 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 級別。示例...