面試題21.調整數組順序使奇數位於偶數前面
題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。
示例:
輸入:nums = [1,2,3,4]
輸出:[1,3,2,4]
注:[3,1,2,4] 也是正確的答案之一。
提示:
1 <= nums.length <= 50000
1 <= nums[i] <= 10000
題解
定義兩個指針,保證第一個指針在第二個指針前面,然後一個從前向後,遇到奇數繼續向後,遇到偶數停止;一個從後向前,遇到偶數繼續向前,遇到奇數停止;交換兩個索引所指的數;代碼如下
class Solution {
public int[] exchange(int[] nums) {
int i = 0;
int j = nums.length-1;
while(i<j){
while(nums[i]%2==1&&i<j) i++;
while(nums[j]%2==0&&j>i) j--;
if(i<=j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
i++;
j--;
}
return nums;
}
}