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

题目描述:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

 

提示:

  1. 0 <= nums.length <= 50000
  2. 0 <= nums[i] <= 10000

 

 

 

复杂度分析:
  时间复杂度 O(N) : N 为数组 nums 长度,双指针 i, j 共同遍历整个数组。
  空间复杂度 O(1) : 双指针 i, j使用常数大小的额外空间。

 

代码:

x&1 位运算 等价于 x%2 取余运算,即皆可用于判断数字奇偶性。

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

 

posted @ 2023-05-16 09:57  ZDREAMER  阅读(13)  评论(0)    收藏  举报