专栏首页CtrlCV博客【剑指Offer】调整数组顺序使奇数位于偶数前面

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

题目

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

示例:

输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。

提示:

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

题解

首尾双指针 定义头指针 leftleft ,尾指针 rightright . leftleft 一直往右移,直到它指向的值为偶数 rightright 一直往左移, 直到它指向的值为奇数 交换 nums[left]nums[left] 和 nums[right]nums[right] . 重复上述操作,直到 left == rightleft==right .

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;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【剑指Offer】I. 从上到下打印二叉树

    小新哟
  • 【剑指Offer】二叉树的镜像

    输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]

    小新哟
  • 3种方法加密Python文件

    这里重命名时去掉“.cp35-win_amd64”不要更改前面的名字,否则不能正常引用.import main #保证当前文件夹下没有.py或者.pyc.

    小新哟
  • 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)

    在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。

    Michael阿明
  • 算法leetcode-15

    opprash
  • LeetCode140|有多少小于当前数字的数字

    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。

    码农王同学
  • 018. 四数之和 | Leetcode题解

    给定一个包含n 个整数的数组 nums 和一个目标值 target ,判断 nums 中是否存在四个元素 a, b,c 和 d ,使得a + b + c ...

    苏南
  • 015. 三数之和 | Leetcode题解

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 _a,b,c ,_使得 a + b + c = 0 ?请你找出所有满足条件且不重复...

    苏南
  • LeetCode 283. 移动零 - easy

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    HLQ_Struggle
  • 283 Move Zeroes

    /** * 题意:将0挪到末尾,并且不改数组中原有元素的顺序 * 解析:找到0元素,然后寻找其后面非0的元素,进行交换位置 * @param {numbe...

    用户1624346

扫码关注云+社区

领取腾讯云代金券