LeetCode 922 按奇偶排序陣列 II

2021-09-30 19:34:37 字數 2555 閱讀 4566

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] 也會被接受。

2 <= a.length <= 20000

a.length % 2 == 0

0 <= a[i] <= 1000

建立新列表b。

逐一取出a中符合b列表當前奇偶性的a列表數字新增到b列表。

比如資料[4,2,5,7],首先是4,新增到b[0]中,a列表變更為[2,5,7]。其次是2,不符合要求,往後尋找第乙個奇數是5,新增到b[1],a列表變更為[2,7]。這個思路核心是a列表的長度是變化的,要控制好列表的下標,不要出現超限錯誤。

class

solution

:def

sortarraybyparityii

(self, a)

:"""

:type a: list[int]

:rtype: list[int]

"""i=

0 b=

for i in

range

(len

(a)):if

(i %2)

== a[0]

%2:0

))else

: j=

0while j<

len(a)

:# a列表長度是變化的,要用while迴圈

if i %

2== a[j]%2

:)break

# 新增成功後,退出迴圈

else

: j +=

1return b

由於涉及迴圈巢狀,演算法複雜度為 o(n2),提交後效果不好,用時在後2%。

61 / 61 個通過測試用例

執行用時:824 ms

執行用時戰勝1.91%的提交記錄

這個是看別人的思路,特別粗暴

a中的偶數和奇數分別取出來,放在evennumoddnum中。

依次將evennumoddnum中的數放入b中。

class

solution

:def

sortarraybyparityii

(self, a)

:"""

:type a: list[int]

:rtype: list[int]

"""b=

evennum=

oddnum=

for i in

range

(len

(a))

:if a[i]%2

==0:else

:for i in

range

(len

(evennum)):

])])

return b

有兩個迴圈,複雜度為 o(n)。提交執行用時排名在14%以內。

61 / 61 個通過測試用例

執行用時:168 ms

執行用時戰勝 87.62% 的提交記錄

這個是大神的思路,前1%。

建立乙個和a一樣長度的全零列表b

直接把a的元素往b中填,偶數就填到偶數字,奇數就填到奇數字。

class

solution

:def

sortarraybyparityii

(self, a)

:"""

:type a: list[int]

:rtype: list[int]

"""i =

0 j =

1 ans =[0

]*len(a)

for num in a:

if num %2==

0:ans[i]

= num

i +=

2else

: ans[j]

= num

j +=

2return ans

這個思路更好,只用迴圈一次,複雜度為 o(n)。

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...