算法中常用的数字操作

算法中常用函数

1、交换数值(异或运算)

void swap(int *a,int *b):{
    *a^=*b;
    *b^=*a;
    *a^=*b;
}

2、返回三个数最大值

float max(float a,float b,float c){
    return a>b?(a>c?a:c):(b>c?b:c);
}

3、返回整型的二进制表示中“1”的个数

int nomberOf1(int n){
    int count = 0;
    for(int i=0;i<32,i++){
        if ((n>>i)&1){
            count+=1;
        }
    }
    return count;
}

正数使用源码表示,负数使用补码表示。在C语言中,整数右移则左侧填充符号位的值;整数左移,右侧填充0。C语言在16位的编译器中int型为2字节,在32位和64位的编译器中int型为4字节。

4、把数组排成最小数(最大数)

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

#python版
def printMinNumber(number):
    if not number:
        return ''
    lmb = lamdba x1,x2:int(str(x1)-str(x2))-int(str(x2)-str(x1))
    array = sorted(number,cmp=lmb)
    return ''.join([str(i) for i in array])

猜你喜欢

转载自blog.csdn.net/HevenYin/article/details/79583828