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

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

题目

题目链接

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

示例:

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

解题

方法一:双指针

原地修改

注意(nums[left]&1)==1 要加括号, 因为 == 的优先级比&更高

nums[left]&1等价于nums[left]%2,但是通常情况下位运算更加快一点

class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        int left=0,right=nums.size()-1;
        while(left<right){
            while(left<right&&(nums[left]&1)==1) left++;
            while(left<right&&(nums[right]&1)==0) right--;
            swap(nums[left],nums[right]);
        }
        return nums;
    }
};

方法二:(i)

class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        int n=nums.size();
        vector<int> res(n);
        int left=0,right=n-1;
        for(int i=0;i<n;i++){
            if(nums[i]%2==1){
                res[left]=nums[i];
                left++;
            }
            else{
                res[right]=nums[i];
                right--;
            }
        }
        return res;
    }
};
相关文章
|
12月前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
弹性计算 资源调度 Kubernetes
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
1841 3
|
小程序 UED 开发者
小程序的生命周期函数
小程序的生命周期函数
442 1
|
7月前
|
前端开发 UED 容器
《解锁CSS布局魔法,打造惊艳页面》
CSS是前端开发中实现页面布局的核心工具,通过盒模型、定位方式(静态、相对、绝对、固定、粘性)、Flexbox和CSS Grid等技术,可以灵活构建从简单到复杂的布局效果。盒模型定义了元素的结构与空间关系;不同定位方式满足多样化的排版需求;Flexbox擅长一维布局,而CSS Grid则适用于复杂的二维布局。此外,响应式设计结合媒体查询和弹性单位,确保跨设备的良好体验。高级技巧如伪类/伪元素、CSS变量的应用,以及优化选择器使用,进一步提升布局效率与性能。掌握这些方法,可创造出既美观又实用的网页设计。
74 11
|
11月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
558 5
|
12月前
|
弹性计算 固态存储 Linux
阿里云服务器、轻量应用服务器、gpu云服务器收费标准与实时活动价格参考
云服务器ECS、轻量应用服务器和gpu云服务器是阿里云的主要云服务器产品,目前轻量应用服务器2核2G收费标准为60元/月,活动价格只要36元/1年或68元1年,云服务器1核1G包月收费标准最低为24.0元/月,GPU云服务器中gn6i实例4核15G配置月付1681.00/1个月起,gn6v实例8核32G配置月付3817.00/1个月起。本文为大家整理汇总了阿里云服务器、轻量应用服务器、gpu云服务器的最新收费标准与活动价格情况,以表格形式展示给大家,以供参考。
|
API 数据库 Python
二、学习 Flask之二
二、学习 Flask之二
161 0
|
数据安全/隐私保护
硬盘坏道如何检测和修复?
本文介绍了硬盘坏道的概念,包括逻辑坏道和物理坏道的区别,并提供了使用DiskGenius检测和修复坏道的步骤。当硬盘出现坏道且包含重要数据时,应立即备份数据,使用数据恢复软件,或在严重情况下寻求专业帮助。保护和恢复数据是应对硬盘坏道的关键。
|
开发工具 数据库 开发者
淘东电商项目(28) -QQ授权登录实现思路
淘东电商项目(28) -QQ授权登录实现思路
145 0
淘东电商项目(28) -QQ授权登录实现思路
|
SQL 关系型数据库 MySQL
MYSQL基础知识之【创建,删除,选择数据库】
MYSQL基础知识之【创建,删除,选择数据库】
137 0