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

本文介绍了如何使用Java编写一个Solution类,实现数组中奇数与偶数元素互换的功能。通过设置两个指针left和right,分别从数组的两端开始遍历,遇到奇数left指针右移,遇到偶数right指针左移,最后交换left和right指向的元素。这种方法有效地将所有奇数移动到数组前面,偶数移动到后面。
摘要由CSDN通过智能技术生成

在这里插入图片描述

// 登录 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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值