給定一個非負整數數組?nums
,??nums
中一半整數是 奇數 ,一半整數是 偶數 。
對數組進行排序,以便當?nums[i]
為奇數時,i
?也是 奇數 ;當?nums[i]
?為偶數時, i
也是 偶數 。
你可以返回 任何滿足上述條件的數組作為答案 。
示例 1:
輸入:nums = [4,2,5,7] 輸出:[4,5,2,7] 解釋:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也會被接受。
示例 2:
輸入:nums = [2,3] 輸出:[2,3]
提示:
2 <= nums.length <= 2 * 104
nums.length
?是偶數nums
?中一半是偶數0 <= nums[i] <= 1000
進階:可以不使用額外空間解決問題嗎?
我的解答:
class Solution {public int[] sortArrayByParityII(int[] nums) {int o_index = 0,q_index = 1;int len = nums.length - 1;while(o_index <= len - 1){// 如果當前偶數位上的數為奇數if(nums[o_index] %2 != 0){while(q_index <= len){// 找到當前奇數位上位偶數的位置if(nums[q_index] %2 == 0){// 交換2者位置int temp = nums[o_index];nums[o_index] = nums[q_index];nums[q_index] = temp;q_index += 2;break;}q_index += 2;}}o_index += 2;}return nums;}
}