// 登录 AlgoMooc 官网获取更多算法图解
// https://www.algomooc.com
// 作者:程序员吴师兄
class Solution {
public int[] exchange(int[] nums) {
// 定义头指针 left
int left = 0 ;
// 定义尾指针 right
int right = nums.length - 1;
// 定义临时变量 tmp
int tmp;
// 移动 left 和 right ,直到 left 在 right 右侧或者相遇为止
while(left < right) {
// 如果 left 指针指向的元素值是奇数,那么说明该元素在左侧了,观察其它的元素,即让 left 向右移动
while(left < right && (nums[left] & 1) == 1) left++;
// 如果 right 指针指向的元素值是偶数,那么说明该元素在右侧了,观察其它的元素,即让 right 向左移动
while(left < right && (nums[right] & 1) == 0) right--;
// 否则就说明,此时要么 left 指向的元素值为偶数,要么 right 指向的元素值为奇数
// 交换这两个位置的元素
tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
}
// 最后返回结果就行
return nums;
}
}
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
最新推荐文章于 2023-08-20 13:40:59 发布
本文介绍了如何使用Java编写一个Solution类,实现数组中奇数与偶数元素互换的功能。通过设置两个指针left和right,分别从数组的两端开始遍历,遇到奇数left指针右移,遇到偶数right指针左移,最后交换left和right指向的元素。这种方法有效地将所有奇数移动到数组前面,偶数移动到后面。
摘要由CSDN通过智能技术生成