面试题 21. 调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面

题目描述

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

示例

输入:nums = [1,2,3,4]

输出:[1,3,2,4]

注:[3,1,2,4] 也是正确的答案之一。

题解

cpp 复制代码
    void exchange(vector<int>& nums) {
        int left = 0, right = nums.size() - 1;
        auto iseven = [&](int x) -> bool {
            return x % 2 == 0;
        };
        while (left < right) {
            while (!iseven(nums[left]) and left < right) {
                left++;
            }
            while (iseven(nums[right]) and right > left) {
                right--;
            }
            swap(nums[left++], nums[right--]);
        }
    }
相关推荐
工口发动机9 分钟前
ABC440DEF简要题解
c++·算法
毕设源码-郭学长16 分钟前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
qq_54702617918 分钟前
Maven 使用指南
java·maven
C++ 老炮儿的技术栈22 分钟前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
xiaolyuh12327 分钟前
Arthas修改类(如加日志)的实现原理
java
栗子叶30 分钟前
Java对象创建的过程
java·开发语言·jvm
零小陈上(shouhou6668889)34 分钟前
K-近邻算法 - lazy learning的代表
算法·近邻算法
有一个好名字40 分钟前
力扣-从字符串中移除星号
java·算法·leetcode
萧瑟其中~44 分钟前
二分算法模版——基础二分查找,左边界查找与右边界查找(Leetcode的二分查找、在排序数组中查找元素的第一个位置和最后一个位置)
数据结构·算法·leetcode
码上就好ovo1 小时前
Atcoder Beginnner Contest 440
算法