LeetCode 922 按奇偶排序陣列 II

2021-10-10 11:47:49 字數 1900 閱讀 5340

題目:

922. 按奇偶排序陣列 ii

給定乙個非負整數陣列 a, a 中一半整數是奇數,一半整數是偶數。

對陣列進行排序,以便當 a[i] 為奇數時,i 也是奇數;當 a[i] 為偶數時, i 也是偶數。

你可以返回任何滿足上述條件的陣列作為答案。

示例:

輸入:[4,

2,5,

7]輸出:[4,

5,2,

7]解釋:[4,

7,2,

5],[2,

5,4,

7],[2,

7,4,

5] 也會被接受。

2

<= a.length <=

20000

a.length %2==

00<= a[i]

<=

1000

解題思路1:

用filter()函式,提取出偶數和奇數,並形成兩個列表,最後把兩個列表輸出。

code:

class

solution

:def

sortarraybyparityii

(self, a: list[

int])-

> list[

int]

: nums1 =

list

(filter

(lambda a: a %2==

0, a)

) nums2 =

list

(filter

(lambda a: a %2==

1, a)

) a[::

2], a[1:

:2]= nums1, nums2

return a

執行結果:

解題思路2:

首先先建立兩個列表,通過**來判斷出在a中位置不對的元素,然後在兩個列表中分別存放奇數但索引不是奇數的元素和偶數但索引不是偶數的元素,最後在把兩個元素在a中相互替換一下,輸出a。

code:

class

solution

:def

sortarraybyparityii

(self, a: list[

int])-

> list[

int]

: b =

c =for i in

range

(len

(a))

:if i %2!=

0and a[i]%2

==0:#在b中新增元素是偶數但索引不是偶數的數字

elif i %2==

0and a[i]%2

!=0: #在a中新增元素是奇數但索引不是奇數的數字

for i in

range

(len

(b))

:#遍歷b中的特殊數字的個數

a[b[i]

], a[c[i]

]= a[c[i]

], a[b[i]

]#把錯誤的元素位置相互交換一下

return a #最後重新返回列表a

執行結果:

leetcode 922按奇偶排序陣列

給定乙個非負整數陣列 a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當 a i 為奇數時,i 也是奇數 當 a i 為偶數時,i 也是偶數。你可以返回任何滿足上述條件的陣列作為答案。示例 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5...

leetcode 922 按奇偶排序陣列 II

給定乙個非負整數陣列a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當a i 為奇數時,i也是奇數 當a i 為偶數時,i也是偶數。你可以返回任何滿足上述條件的陣列作為答案。示例 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5 也會被接...

LeetCode 922 按奇偶排序陣列II

題目描述 給定乙個非負整數陣列a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當a i 為奇數時,i也是奇數 當a i 為偶數時,i也是偶數。你可以返回任何滿足上述條件的陣列作為答案。示例 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5...