剑指 Offer 21. 调整数组顺序使奇数位于偶数前面java题解

思路

双指针法。开始时,i指向第一个位置,j指向最后一个位置。如果i位置是奇数,i+1右移一位;如果j位置是偶数,j-1左移一位;否则交换i位和j位的数,使奇数在前半部分,偶数在后半部分。

代码

nums[i]&1等于nums[i]%2

class Solution {
    public int[] exchange(int[] nums) {
        int i=0;
        int j=nums.length-1;
        int temp;
        while(i<j){
            while((i<j)&&(nums[i]&1)==1){
                i++;
            }
            while((i<j)&&(nums[j]&1)==0){
                j--;
            }
            temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
        }
        return nums;
    }
}

复杂度

时间复杂度O(n) 空间复杂度O(1)

结果

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面java题解_第1张图片

你可能感兴趣的:(剑指Offer)