★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-xsiuesyj-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given an array A
of non-negative integers, half of the integers in A are odd, and half of the integers are even.git
Sort the array so that whenever A[i]
is odd, i
is odd; and whenever A[i]
is even, i
is even.github
You may return any answer array that satisfies this condition.數組
Example 1:微信
Input: [4,2,5,7]
Output: [4,5,2,7] Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.
Note:app
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
給定一個非負整數數組 A
, A 中一半整數是奇數,一半整數是偶數。this
對數組進行排序,以便當 A[i]
爲奇數時,i
也是奇數;當 A[i]
爲偶數時, i
也是偶數。spa
你能夠返回任何知足上述條件的數組做爲答案。code
示例:htm
輸入:[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
288ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 guard A.count > 1 else { 4 return A 5 } 6 7 var A = A 8 var evenPointer = 0 9 var oddPointer = 1 10 while evenPointer < A.count { 11 12 if A[evenPointer] % 2 == 0 { 13 evenPointer += 2 14 } else { 15 A.swapAt(evenPointer, oddPointer) 16 oddPointer += 2 17 } 18 } 19 return A 20 } 21 }
292ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 let n = A.count 4 var A = A 5 var i = 0 6 var j = 1 7 while i < n && j < n { 8 while i < n && A[i] % 2 == 0 { 9 i += 2 10 } 11 while (j < n && A[j] % 2 == 1) { 12 j += 2 13 } 14 if i < n && j < n { 15 (A[i], A[j]) = (A[j], A[i]) 16 } 17 } 18 return A; 19 } 20 }
296ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 var outputEven: [Int] = [] 4 var outputOdd: [Int] = [] 5 6 for value in A { 7 if value % 2 == 0 { 8 outputEven.append(value) 9 } else { 10 outputOdd.append(value) 11 } 12 } 13 14 var output:[Int] = [] 15 for index in 0 ..< outputEven.count { 16 output.append(outputEven[index]) 17 output.append(outputOdd[index]) 18 } 19 return output 20 } 21 }
300ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 4 var even = [Int]() 5 var odd = [Int]() 6 7 for i in A { 8 if i % 2 == 0 { 9 even.append(i) 10 } else { 11 odd.append(i) 12 } 13 } 14 15 var output = [Int]() 16 17 for i in 0..<even.count { 18 output.append(even[i]) 19 output.append(odd[i]) 20 } 21 22 return output 23 } 24 }
308ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 var copyA = A 4 var oddArray: [Int] = [] 5 var evenArray: [Int] = [] 6 for (index, interger) in A.enumerated() { 7 if index % 2 == 0, interger % 2 != 0 { 8 oddArray.append(index) 9 } 10 if index % 2 != 0, interger % 2 == 0 { 11 evenArray.append(index) 12 } 13 } 14 for (index, _) in oddArray.enumerated() { 15 copyA.swapAt(oddArray[index], evenArray[index]) 16 } 17 return copyA 18 } 19 }
320ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 var evenNums = A.filter{$0 % 2 != 0} 4 var oddNums = A.filter{$0 % 2 == 0} 5 var result = [Int]() 6 7 for (index , _) in oddNums.enumerated() { 8 result.append(oddNums[index]) 9 result.append(evenNums[index]) 10 } 11 12 return result 13 } 14 }
324ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 var N:Int = A.count 4 var ans:[Int] = [Int](repeating: 0,count: N) 5 6 var t:Int = 0 7 for x in A 8 { 9 if x % 2 == 0 10 { 11 ans[t] = x 12 t += 2 13 } 14 } 15 t = 1 16 for x in A 17 { 18 if x % 2 == 1 19 { 20 ans[t] = x 21 t += 2 22 } 23 } 24 return ans 25 } 26 }
328ms
1 class Solution { 2 func sortArrayByParityII(_ a: [Int]) -> [Int] { 3 var evenNumbers: [Int] = [] 4 var oldNumbers: [Int] = [] 5 for n in a { 6 if n % 2 == 0 { 7 evenNumbers.append(n) 8 } else { 9 oldNumbers.append(n) 10 } 11 } 12 13 let zipped = zip(evenNumbers,oldNumbers).flatMap{ [$0.0, $0.1] } 14 return zipped 15 } 16 }
368ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 var res1 = [Int]() 4 var res2 = [Int]() 5 var res3 = [Int]() 6 7 for num in A { 8 if num % 2 == 0{//ou 9 res1.append(num) 10 } 11 else{//ji 12 res2.append(num) 13 } 14 } 15 for i in 0..<res1.count{ 16 res3.append(res1[i]) 17 res3.append(res2[i]) 18 } 19 return res3 20 } 21 }
416ms
1 class Solution { 2 func sortArrayByParityII(_ A: [Int]) -> [Int] { 3 let b = A.sorted { (i, _) in return i % 2 == 0 } 4 let count = A.count 5 var result:[Int] = Array(repeating: 0, count: count) 6 for i in 0..<count/2 { 7 result[2*i] = b[i] 8 result[2*i+1] = b[count-1-i] 9 } 10 11 return result 12 } 13 }