题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
提示:
0 <= nums.length <= 50000
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; } }
标签:21,Offer,int,复杂度,nums,偶数,数组,奇数 From: https://www.cnblogs.com/zhz123567/p/17404017.html