🌕 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
2022年10月10日
- algorithm
🌕 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
难度: 🌕
问题描述
解法
class Solution {
public int[] exchange(int[] nums) {
// 思路:
// 双指针
int len = nums.length;
if(len <= 1) {
return nums;
}
// len > 1
int left = 0; // left 左边的全部是奇数,left 为偶数,等待右边的奇数和其替换
while(left < len) {
int cur = nums[left];
if((cur & 1) == 1) {
left ++;
} else {
break;
}
}
int right = left;
while(right < len) {
// 找到奇数
int cur = nums[right];
if((cur & 1) == 1) {
swap(nums, left, right);
left ++;
right ++;
} else {
right ++;
}
}
return nums;
}
private void swap(int[] nums, int a, int b) {
int tmp = nums[a];
nums[a] = nums[b];
nums[b] = tmp;
}
}