zoukankan      html  css  js  c++  java
  • 剑指offer:调整数组顺序使奇数位于偶数前面

    问题描述

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

    解题思路

    c++:

    可以牺牲空间换时间,两边遍历原数组,第一次挑出奇数,第二次挑出偶数。

    python:

    提供一种最简单的方法,利用sorted()和lambda即可。将sorted()的key值设为lambda x: x%2==0,那么奇数就是0,偶数就是1,所以奇数就会全部排到偶数的前面去。

    c++代码

     1 class Solution {
     2 public:
     3     void reOrderArray(vector<int> &array) {
     4         vector<int> tmp;
     5         for(int i=0; i<array.size(); i++){
     6             if(array[i]%2 == 1)   tmp.push_back(array[i]);
     7         }
     8         for(int i=0; i<array.size(); i++){
     9             if(array[i]%2 == 0)   tmp.push_back(array[i]);
    10         }
    11         array = tmp;
    12     }
    13 };

    python代码

    1 # -*- coding:utf-8 -*-
    2 class Solution:
    3     def reOrderArray(self, array):
    4         # write code here
    5         ans = sorted(array, key = lambda x:x%2==0)
    6         return ans
  • 相关阅读:
    关于路径的小知识点
    转发与重定向
    一种反复的读写文件的方法
    文字排版reportlab
    Qgis中插件的安装位置
    spyder打开文件假死解决
    地图跳跃-超级码力
    尾部的零
    一探torch.nn究竟“What is torch.nn really?”
    KAZE特征和各向异性扩散滤波
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/10482056.html
Copyright © 2011-2022 走看看