二进制中1的个数&数值的整数次方&调整数组顺序使奇数位于偶数前面

二进制中1的个数 &数值的整数次方&调整数组顺序使奇数位于偶数前面

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 将n与n-1相与会把n的最右边的1去掉,如1100&1011=1000,再让num++即可计算出有多少个1
int  NumberOf1(int n) {
        int num = 0;
        while(n)
        {
            n = n&(n-1);
            num++;
        }
        return num;
    }

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

  double Power(double base, int exponent) {
        double sum = 1.0;
        int flag = 0;//标记
        if(exponent < 0)
        {
            flag = 1;
            exponent = -exponent;
        }
        for(int i = 1; i <= exponent; i++)
        {
            sum = sum * base;
        }
        if(flag == 0)
            return sum;
        else
            return 1/sum;
    }

题目描述

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

 void reOrderArray(vector<int> &array) {
        vector<int>::iterator iter;
        vector<int> temp;
        //将array中的偶数删除,放入temp中,相对顺序不变的
        for(iter = array.begin(); iter!=array.end();)
        {
            if((*iter)%2==0)
            {
                temp.push_back(*iter);
                iter = array.erase(iter);
            }
            else
                 iter++;

        }
        //将temp中的元素,放入array的后面
        for(iter=temp.begin(); iter!=temp.end(); iter++)
        {
            array.push_back(*iter);
        }
    }

猜你喜欢

转载自blog.csdn.net/foreverdongjian/article/details/80610316