zoukankan      html  css  js  c++  java
  • 905.按奇偶排序数组

    1、题目

    给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
    你可以返回满足此条件的任何数组作为答案。
     
    示例:
    输入:[3,1,2,4]
    输出:[2,4,3,1]
    输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
     
     
     
    2、思路
    思路1:找出最大值;申请大小位max+1的vector;A[j]==i,则vector对应i位置加1;释放A,根据vector中的数
    值重新存进A中;
    思路2:申请两个vector,一个全部装偶数,一个全部装奇数,然后拼接两个vector
    思路3:双指针法遍历数组A;偶数从头开始存放,奇数从尾部开始存放;当j-i==0时候停止,本文选思路3
    因为思路3只用申请一个辅助空间,遍历一次
    思路4:对思路3的改进,不用申请辅助空间,双指针双向遍历,i是交换位,j位是比较位,判断i是不是偶数,是偶数,i+1,不是偶数j+1,判断j是不是偶数,不是j再+1,知道j指向偶数位置,然后交换i和j的值,直至j指向数组尾部。
    3、代码
    思路3:
     1 //记得自己好像做过这道题
     2 //思路1:找出最大值;申请大小位max+1的vector;A[j]==i,则vector对应i位置加1;释放A,根据vector中的数
     3 //值重新存进A中;
     4 //思路2:申请两个vector,一个全部装偶数,一个全部装奇数,然后拼接两个vector
     5 //思路3:双指针法:遍历数组A;偶数从头开始存放,奇数从尾部开始存放;当j-i==0时候停止,本文选思路3
     6 //因为思路3只用申请一个辅助空间,遍历一次
     7 class Solution {
     8 public:
     9     vector<int> sortArrayByParity(vector<int>& A) {
    10         vector<int>a(A.size());
    11         int i=0;
    12         int j=A.size()-1;//定义i和j双指针
    13         int k=0;
    14         while(j-i>=0){
    15             if(A[k]%2==0) {
    16                 a[i]=A[k];
    17                 i=i+1;
    18             }
    19             else{
    20                 a[j]=A[k];
    21                 j--;
    22             }
    23             k++;
    24         }
    25         return a;
    26     }
    27 };

    思路四:

     1 class Solution {
     2 public:
     3     vector<int> sortArrayByParity(vector<int>& A) {
     4        int i=0,j=0;
     5        int le=A.size();
     6        while(i<le&&j<le)
     7         {
     8          if(A[j]%2==0) {swap(A[i],A[j]);i++;j++;}
     9          else j++;
    10          }
    11        return A;
    12 
    13     }
    14 };

    发现运行起来,思路更慢!!还不如思路3!!

     
  • 相关阅读:
    vb combobox 用法问题总结
    VB6.0 String 用法总结
    VB6.0 GetTcpTable 使用详解
    Python 自学笔记(二)第一个程序 Hello World
    Python 自学笔记(一)环境搭建
    VB MSFlexGrid 用法
    wifi 攻破
    python核心编程-第五章-习题
    python核心编程-第五章-个人笔记
    python核心编程-第四章-习题
  • 原文地址:https://www.cnblogs.com/hehesunshine/p/11722862.html
Copyright © 2011-2022 走看看