您现在的位置是:主页 > news > 做有声小说网站/网络营销的四个步骤
做有声小说网站/网络营销的四个步骤
admin2025/5/15 16:45:07【news】
简介做有声小说网站,网络营销的四个步骤,泉州共创科技,工信部个人备案网站可信吗package SwordOffer; /** * Description: 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1࿱…
做有声小说网站,网络营销的四个步骤,泉州共创科技,工信部个人备案网站可信吗package SwordOffer;
/**
* Description: 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1࿱…
package SwordOffer;
/**
* @Description: 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
示例 2:输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例 3:输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
* @Param:
* @return:
* @Author: lvhong
* @Date:
* @E-mail lvhong282@163.com
*/
public class lab15easy {public static void main (String[] args){System.out.println(hammingWeight(11111111111111111111111111111101));}//方法一:逐位判断//根据 与运算 定义,设二进制数字 nn ,则有://若 n&1=0 ,则 n 二进制 最右一位 为 0 ;//若 n&1=1 ,则 n 二进制 最右一位 为 1 。//根据以上特点,考虑以下 循环判断 ://判断 n 最右一位是否为 1 ,根据结果计数。//将 n 右移一位(本题要求把数字 n 看作无符号数,因此使用 无符号右移 操作)。//算法流程://初始化数量统计变量 res=0 。//循环逐位判断: 当 n=0 时跳出。//res += n & 1 : 若 n&1=1 ,则统计数 res 加一。//n >>= 1 : 将二进制数字 n 无符号右移一位( Java 中无符号右移为 ">>>" ) 。//返回统计数量 res 。//复杂度分析://时间复杂度 O(log2 N) 此算法循环内部仅有 移位、与、加 等基本运算,占用 O(1) ;逐位判断需循环 log2 N//空间复杂度 O(1) : 变量 res 使用常数大小额外空间。////作者:jyd//链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/solution/mian-shi-ti-15-er-jin-zhi-zhong-1de-ge-shu-wei-yun///来源:力扣(LeetCode)//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。public static int hammingWeight(int n) {int buf=0;while(n>0){ //这里不可以用n>0,因为输入值过大,超过极限值后会将原来的无符号值第一位视作符号位,变成负数if((n&1)==1){buf+=1;}n=n>>>1;}return buf;}//方法二:巧用 n&(n−1)//(n−1) 解析: 二进制数字 n 最右边的 1 变成 0 ,此 1 右边的 0 都变成 1 。 111=>110 110=>101//n&(n−1) 解析: 二进制数字 nn 最右边的 1 变成 0 ,其余不变。 11110000 => 11100000//算法流程://初始化数量统计变量 res 。//循环消去最右边的 1 :当 n=0 时跳出。//res += 1 : 统计变量加 1 ;//n &= n - 1 : 消去数字 n 最右边的 1 。//返回统计数量 res 。//复杂度分析://时间复杂度 O(M)O(M) : n \& (n - 1)n&(n−1) 操作仅有减法和与运算,占用 O(1)O(1) ;设 MM 为二进制数字 nn 中 11 的个数,则需循环 MM 次(每轮消去一个 11 ),占用 O(M)O(M) 。//空间复杂度 O(1)O(1) : 变量 resres 使用常数大小额外空间。////作者:jyd//链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/solution/mian-shi-ti-15-er-jin-zhi-zhong-1de-ge-shu-wei-yun///来源:力扣(LeetCode)//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
// public int hammingWeight(int n) {
// int buf=0;
// while(n!=0){
// buf++;
// n=n&(n-1);
// }
// return buf;
// }
}