当前位置: 首页 > ai >正文

C++面试(6)-----调整数组顺序使奇数位于偶数前面

  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11

题目描述

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

你可以返回任意满足条件的数组,但必须保证所有奇数在前、偶数在后。

示例:

输入: nums = [1,2,3,4,5]
输出: [1,3,5,2,4]  // 或者 [3,5,1,2,4] 等也都是合法输出

解题思路

我们可以使用双指针法来解决这个问题:

  • 定义两个指针 left 和 right:
    • left 从前往后找偶数;
    • right 从后往前找奇数;
  • 当找到一个偶数和一个奇数时,交换它们;
    直到 left >= right 为止。

这个方法可以做到原地排序,时间复杂度为 O(n),空间复杂度为 O(1)。

实现代码

#include <iostream>
#include <vector>class Solution
{public:std::vector<int> exchange(std::vector<int>& nums){int left = 0;int right = nums.size()-1;while(left < right){while(left<right && nums[left]%2 == 1){left++;}while(left<right && nums[right]%2 == 0){right--;}std::swap(nums[left],nums[right]);}return nums;}
};int main()
{std::vector<int> nums = {2,2,2,1};Solution s;s.exchange(nums); for(auto i : nums){std::cout << i << " ";}
}
http://www.xdnf.cn/news/13778.html

相关文章:

  • CodeForces 1453C. Triangles
  • QOpenGLWidget 中能同时显示 .step 的结构树和渲染图吗
  • 快递鸟电商退换货技术全解析:构建智能化逆向物流管理体系
  • IT运维的365天--028 批处理自行检测并以管理员权限运行
  • vue3 常见引用
  • 伊吖学C笔记(6、数、求和、排列)
  • 模拟电路的知识
  • 如何通过插件系统打造个性化效率工作流
  • go部分语法记录
  • 【Fifty Project - D36】
  • 2025pmx文件怎么打开blender和虚幻
  • 林业资源多元监测技术守护绿水青山
  • 说一下Java里面线程池的拒绝策略
  • 从实验室到实践:无人机固件越权提取技术解析
  • DNS常用的域名记录
  • 品融电商:头部全域电商代运营,助品牌决胜多平台时代
  • supervisorctr命令简介
  • 翻译核心词汇
  • React中修改 state 时必须返回一个新对象 (immutable update)
  • Windows环境变量原理(用户变量与系统变量)(用户环境变量、系统环境变量)
  • 解锁 AI 短视频创作密码,开启你的创意之旅
  • DOcplex用法锦集(持续更新)
  • CKA考试知识点分享(12)---configmap
  • 【Android Studio】新建项目及问题解决
  • python3如何使用QT编写基础的对话框程序
  • 【开发常用命令】:服务器与本地之间的数据传输
  • wsl 安装vllm 0.9.1 + torch 2.7.0 + xformers 0.0.30 + flashinfer
  • RocketMQ 客户端编程模型
  • 第28节 Node.js 文件系统
  • SAP调用deepseek 的API