蓝桥刷题note4(位1的个数,爬楼梯)

1.位1的个数

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

中心思路:利用汉明重量,n&(n-1)的操作可以去掉对应二进制数最低位的1.

int hammingWeight(int n) {
      int count = 0;
    while (n) {
        n &= (n - 1); // 去掉最低位的1
        count++;
    }
    return count;
}

2.爬楼梯 

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

中心思路:上到第n级台阶可在第n-1个台阶走一步到达或在第n-2级台阶走两步到达,所以上到第n级台阶的方法数等于上到n-1级台阶方法数之和,故可由此设置循环。

int climbStairs(int n) {
    if(n==1){
        return 1;
    }
    if(n==2){
        return 2;
    }
    int f1=1,f2=2,f=0;
    for(int i=3;i<=n;i++){
        f=f1+f2;
        f1=f2;
        f2=f;
    }
    return f;
}

你可能感兴趣的:(算法,数据结构,c++,学习,开发语言)