• 《剑指offer》 调整数组顺序使得奇数在偶数前面


    本题来自《剑指offer》 调整数组顺序使得奇数在偶数前面

    题目:

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

    思路:

      假设程序功能是黑盒子,现在考虑输入和输出。

      输入:【1,2,3,4,5,6】,数组为空,只有一个元素

      输出:题目要求相对位置不变,【1,3,5,2,4,6】代码一实现,需要借助辅助内存。

           若位置可以变,【1,5,3,4,2,6】 代码二实现,前后指针遍历,前面的偶数和后面的奇数互换即可

    C++ Code(2):

    class Solution {
    public:
        void reOrderArray(vector<int> &array) {
            vector<int> result;
            int left = 0;
            int right = array.size()-1;
            int temp;
            while (left<right){
                while ((left<right)&& !isEven(array[left])){    //前指针向后移动直到遇到奇数
                    left++;
                }
                while((left<right)&& isEven(array[right])){     //后指针向前移动直到遇到偶数
                    right--;
                }
                if (left<right){                                //走到这一步,说明前指向了偶数,后指针指向了奇数
                    temp = array[left];
                    array[left] = array[right];
                    array[right] = temp;
                }
            }
        }
        bool isEven(int num){                                    //判断奇偶数
            return (num&1)==0;
        }
    };

    C++ Code(1):

    class Solution {
    public:
        void reOrderArray(vector<int> &array) {
             vector<int> result;
            int num=array.size();
            for(int i=0;i<num;i++)
                {
                if(array[i]%2==1)
                    result.push_back(array[i]);
            }
            for(int i=0;i<num;i++)
                {
                if(array[i]%2==0)
                    result.push_back(array[i]);
            }
            array=result;
        }
    };

    总结:

  • 相关阅读:
    postgresql-uuid重复问题
    postgresql-revoke 回收权限及删除角色
    postgresql
    postgresql -ALTER ROLE
    postgresql-行级安全-RLS
    postgresql 列级安全,列权限
    postgres 只读账号
    postgresql 对未来的表赋权限
    postgres权限管理
    特定元素个数的数组作为函数入参的两个方法
  • 原文地址:https://www.cnblogs.com/missidiot/p/10783372.html
Copyright © 2020-2023  润新知