首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C++分离数组中的奇数和偶数

在C++中,可以使用以下方法分离数组中的奇数和偶数:

代码语言:txt
复制
#include <iostream>
#include <vector>

std::pair<std::vector<int>, std::vector<int>> separateOddEven(const std::vector<int>& nums) {
    std::vector<int> oddNums;
    std::vector<int> evenNums;

    for (const auto& num : nums) {
        if (num % 2 == 0) {
            evenNums.push_back(num);
        } else {
            oddNums.push_back(num);
        }
    }

    return std::make_pair(oddNums, evenNums);
}

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    auto result = separateOddEven(nums);
    std::cout << "Odd numbers: ";
    for (const auto& num : result.first) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Even numbers: ";
    for (const auto& num : result.second) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

以上代码通过遍历数组,将奇数和偶数分别存储在不同的向量中。最后在主函数中,我们可以打印出分离后的奇数和偶数数组。

该方法的时间复杂度为O(n),其中n为数组的大小。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(Elastic Cloud Server,ECS):提供按需配置、弹性扩展的云服务器实例,可满足不同规模业务的需求。链接:https://cloud.tencent.com/product/cvm
  • 云数据库MySQL版(TencentDB for MySQL):基于云的关系型数据库,提供高可用性、高性能、弹性扩展的MySQL服务。链接:https://cloud.tencent.com/product/cdb-mysql
  • 人工智能机器学习平台(AI Machine Learning Platform,MLP):提供机器学习和深度学习的模型训练、部署和管理功能,帮助开发者构建智能化应用。链接:https://cloud.tencent.com/product/mlp
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 调整数组顺序使奇数位于偶数前面,且奇数之间、偶数之间相对位置不变

    输入一个整数数组,实现一个函数来调整该数组数字顺序,使得所有的奇数位于数组前半部分,所有的偶数位于数组后半部分,并保证奇数奇数偶数偶数之间相对位置不变。...、偶数之间相对位置的话,可以直接用2个指针变量,左边往右扫到偶数就暂停,右边往左扫到奇数就暂停然后交换,依次往返,结束条件为两个指针变量相遇。...但是这里有了这个要求,不能这样做了,考虑用空间换时间,如果遇到奇数就用一个数组存起来,遇到偶数再用另一个数组存起来就需要2个额外数组,再最后合并到一个数组里,这是一个思路(或者2个队列也是同样思路)...,现在这里优化一下,只申请一个额外数组,将原来数组从左往右扫,遇到奇数就存到新数组左边,同时将原来数组从右往左扫,遇到偶数就存到新数组右边,这样就可以保证左边是奇数,右边是偶数,且奇数之间、偶数之间相对位置不变...,再合并到原数组就ok了。

    28410

    python 取列表偶数奇数位置

    python列表等于其他语言中数组 首先了解下一般取列表怎么按索引取值,也就是列表切片: list[i:j] 就是从列表索引 i 到索引j 个值;列表索引第一位是从0开始 list[i...:j:2] 一样取i 到 j 但加入了步长 这里步长为2;也就是取每次索引位置开始+2值 看了上面,应该就知道怎么取奇数偶数位了吧 list[::2 ] 就是取奇数位 这里 i j 我们省略的话就是默认数组最开头到结尾...list[1::2] 这里缺省了j 但是i定义了1 也就是从数组第二个数开始取 ,所以这个是取偶数位 例子: l=['28', '7', '55', '0', '82', '3', '9', '4'..., '92', '9', '54', '7', '19', '4', '36', '6'] print(f'奇数位:{l[::2]}\n偶数位:{l[1::2]}') 结果: 奇数位:['28', '55...', '82', '9', '92', '54', '19', '36'] 偶数位:['7', '0', '3', '4', '9', '7', '4', '6']

    8110

    C++版 - 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面

    题目: 调整数组顺序使奇数位于偶数前面 热度指数:11843 时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述 输入一个整数数组,实现一个函数来调整该数组数字顺序,...使得所有的奇数位于数组前半部分,所有的偶数位于位于数组后半部分,并保证奇数奇数偶数偶数之间相对位置不变。...rp=1&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking 分析: 不考虑空间损耗, 可以考虑使用oddeven两个vector分别存放基数偶数..., 然后使用copy函数将odd向量内容even向量内容依次填入原array数组即可....其中有个小技巧: 使用按位与&判断奇偶性比%运算更快一些… 已AC代码: #include #include #include #include<algorithm

    29220

    只有使用 ACL 通配符掩码 才可以使用一条语句就可以 匹配出,奇数vlan网段 偶数vlan网段,odd 奇数, even 偶数

    大家好,又见面了,我是你们朋友全栈君。 只有使用 ACL 通配符掩码 才可以使用一条语句就可以 匹配出,奇数vlan网段 偶数vlan网段,odd 奇数, even 偶数!...码要为 255, 就是每个网段任意主机, access-list 2 permit 192.168.0.0 0.0.254.255 这条语句就是匹配偶数vlan 网段 ,–是数据层面..., 利用访问列表 反掩码 来匹配特定位为10 来区分奇数偶数, 分析: 第三网段为奇数第三网段为偶数,有一个很明显区分就是 最后一位为1就为奇数,为0就是偶数,...00000000 分别对应是 二进制换位点分十进制, 为 128 64 32 16 8 4 2 1 这8位, 只有最后一位是奇数,所以只要最后一位为1 ,前面7位不管是0 还是1 加起来都是...奇数, 反之亦然。

    1.1K20

    在其他数都出现偶数数组中找到出现次数为奇数

    参考自程序员代码面试指南 其他数都出现偶数数组中找到出现奇数数字 整数n与0异或结果为n,n与n异或结果为0 public void printOddTimesNum1(int[] arrs...出现了奇数次,那么最后eO一定是a^b。...如果数组中出现了两个奇数数 最终eO一定不等于0。那么肯定可以在32位整数eO上找到一个不为0bit位。...假设是第k位不等于0, 说明ab第k位一定是一个是0,一个是1,接下来再设置一个变量记为eHasOne,然后再遍历一次数组。 这次遍历时,eHasOne只第k位是1整数异或,其他数忽略。...那么在第二次遍历之后,eHasOne就是a或b一个。 eO^eHasOne就是另一个出现奇数数。

    79910

    题目:将链表奇数偶数位调换组成新链表

    题目:将链表奇数偶数位调换组成新链表 原题链接: http://oj.leetcode.com/problems/swap-nodes-in-pairs/ Given a linked list...必须重新建立一个新链表 进行返回 采用 带头节点单链表 知识补充:带头节点单链表不带头节点单链表有什么区别 带头结点单链表好处解决了 不用判断第一个节点是否为空 不需要特殊处理 用统一方法实现就...Q2: 链表遍历操作 ptr(A)=ptr->next(B) 前提条件节点A节点B 位置关系没有发现变化 在链表排序(交换位置是排序一个方法)原来位置发生改变如何处理 ?...耗时6ms不是最优解呀 耗时应该在建立头节点 如果不用头节点 需要特殊处理 第一次处理时候null 查看耗时3秒 提取到函数外面 为了防止异常数据 异常判断 为了完成遍历 采用三个节点 first

    1.7K90

    给定一个长度为n数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数偶数部分进行排序

    OJ题库ID1007:奇偶数 需求 运行结果 分析 1. 输入n n为数组元素个数 2. 输入n个数 存储到一个数组 3. 用Arrays对数组进行排序 4....找出最大偶数(输出内容最后一个元素后面不带空格,输出最后一个元素是最大偶数) 5. 输出奇数 6....{ /* OJ题库ID1007:奇偶数 给定一个长度为n数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数偶数部分进行排序...所以先输出奇数 再输出偶数 // 循环数组中所有的元素 for (int i = 0; i < arr.length; i++) { // 找出奇数...) { // 由题得最后一个元素后面没有空格(" ") 所以要判断是否是最后一个元素 // 已知奇数在左 偶数在右 并且是按照顺序排序 那么最后一个元素就是最大偶数

    94520

    C++关于使用[]定义静态数组new分配动态数组区别

    静态数组: int a[20]; int b[] = {1, 2, 3} 静态数组长度为常量,在栈中分配内存空间,会自动释放。使用sizeof时,计算是整个数组字节大小。...动态数组: int len = 20; int *a = new int[len]; delete a; 动态数组在堆中分配内存,必须手动释放。...使用sizeof时,计算是指针变量所占内存字节大小。 在使用时,如果数组大小已经确定,可以使用静态数组,效率较高;如果数组大小需要在运行时确定(比如用户输入,函数参数传递等),则使用动态数组。...此外,如果需要在函数返回数组,则必须注意用静态数组时,由于内存在栈中分配,函数执行完毕时会自动销毁,所以返回一个静态数组变量是无意义使用动态数组就可以返回,并在不需要时注意delete释放堆内存

    1.5K10

    C++ extern 数组指针

    在一次使用 extern 声明全局变量过程,因为数组指针混用引发了错误。 我们知道,C++使用 extern 来声明在其他(未使用 include 包含)文件全局变量。..."; 在另一个 b.cpp ,我想使用这个全局变量,由于固有的思想,指针和数组名通用,偷懒写成了如下形式: extern char *a; 由此引发了一个 `segmentation fault...关于这段话理解,我觉得引入编译知识比较好理解,数组名是一个符号,枚举符号一样,有其自身值,数组值就是数组首地址。在编译过程,这些符号常亮会被替换为地址符号。...而指针是一个普通变量,变量值存放数组地址。虽然数组指针都可以进行元素访问,但是其本质是有很大区别的!...这里问题就出现了:由于在这个文件声明 a 是一个指针变量而不是数组,链接器行为实际上是把指针 a 自身地址定位到了另一个 .c 文件定义数组首地址之上,而不是我们所希望数组首地址赋予指针

    43100

    【数据结构算法】奇偶链表

    第一个节点索引被认为是 奇数 , 第二个节点索引为 偶数 ,以此类推。 请注意,偶数组奇数组内部相对顺序应该与输入时保持一致。...因此可以将奇数节点偶数节点分离奇数链表偶数链表,然后将偶数链表连接在奇数链表之后,合并后链表即为结果链表。...通过迭代方式将奇数节点偶数节点分离成两个链表,每一步首先更新奇数节点,然后更新偶数节点。...在上述操作之后,即完成了对一个奇数节点一个偶数节点分离。重复上述操作,直到全部节点分离完毕。...最后令 odd.next = evenHead,将偶数链表连接在奇数链表之后,即完成了奇数链表偶数链表合并,结果链表头节点仍然是 head。

    17710

    c++】模板编程解密:C++特化、实例化分离编译

    N 就是一个非类型模板参数,它表示数组大小,而 T 是一个类型模板参数代表数组中元素类型 使用方法: array a1; array a2; 注意: 浮点数、类对象以及字符串是不允许作为非类型模板参数...这意味着你不能用动态计算值或者运行时才能得知值作为非类型模板参数实参 按需实例化 按需实例化,是 C++ 模板一个重要特性,指的是模板代码只有在真正被使用时才会被编译器实例化 在 C++ ,模板本身并不直接生成可执行代码...因此,最通用且常用方法是将模板定义放在头文件 前面我们知道,单个函数,进行定义分离没有错误,为什么类模版不行呢? 单个函数(非模板函数)类模板在有很大不同,特别是在声明定义分离。...非模板函数声明定义分离 对于非模板函数,你可以在头文件声明它们,并在一个单独源文件定义它们。...实例化过程,编译器使用具体类型替换模板参数。 对于非模板函数,声明定义可以分离,因为编译器知道函数大小调用约定,所以它可以在没有函数体情况下编译调用该函数代码。

    55610

    C++关于[]静态数组new分配动态数组区别分析

    大家好,又见面了,我是全栈君 这篇文章主要介绍了C++关于[]静态数组new分配动态数组区别分析,很重要概念,需要朋友可以参考下 本文以实例分析了C++语言中关于[]静态数组new分配动态数组区别...,可以帮助大家加深对C++语言数组理解。...c++数组引用实例分析)。...其原因可以这样理解,因为[]静态数组是在栈申请,而函数局部变量也是在栈,而new动态数组是在堆分配,所以函数返回后,栈东西被自动释放,而堆东西如果没有delete不会自动释放。...*(c+i)<<" "; cout<<endl; return 0; }/* 何问起 hovertree.com */ 相信看过本文实例分析之后可以进一步加深读者对C++数组认识。

    88230
    领券