首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++ 动态新闻推送

    popcnt的前世今生?

    最近群聊里传了一个面试题 实现统计1的个数(汉明权重 hammingWeight),使用popcnt的算法对硬件不友好,有无绕过的思路 显然这个哥们的第一个实现是 int hammingWeight_popcnt ns 334434 BM_hammingWeight/0 80.7 ns 80.7 ns 8689750 BM_hammingWeight 3646 ns 195882 BM_hammingWeight/512 8099 ns 8097 ns 85508 BM_hammingWeight ns 517551 BM_hammingWeight/0 124 ns 124 ns 5638895 BM_hammingWeight 5511 ns 123293 BM_hammingWeight/512 12036 ns 12036 ns 58336 BM_hammingWeight

    27011编辑于 2024-07-30
  • 来自专栏程序员千羽

    剑指offer | 面试题12:二进制中1的个数

    ://gitee.com/nateshao/leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_12_hammingWeight package com.nateshao.sword_offer.topic_12_hammingWeight; /** * @date Created by 邵桐杰 on 2021/11/20 12 = hammingWeight(11); System.out.println("hammingWeight = " + hammingWeight); } public static int hammingWeight(int n) { int res = 0; while (n ! 代码: public class Solution { public static int hammingWeight2(int n) { int res = 0;

    31030编辑于 2021-12-29
  • 来自专栏福大大架构师每日一题

    2021-10-23:位1的个数。编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1‘

    代码如下: package main import "fmt" func main() { n := 5 if true { ret := hammingWeight1 (n) fmt.Println(ret) } if true { ret := hammingWeight2(uint32(n)) fmt.Println func hammingWeight1(n int) int { bits := 0 rightOne := 0 for n ! 0 { bits++ rightOne = n & (-n) n ^= rightOne } return bits } func hammingWeight2

    1.3K40发布于 2021-10-26
  • 来自专栏全栈修仙之路

    最常见面试算法之位 1 的个数

    Java Code: public int hammingWeight(int n) { int bits = 0; int mask = 1; for (int i = 0; 这里我们可以通过无符号右移运算符来优化一下循环次数: Java Code: public int hammingWeight(int n) { int count = 0; while Java Code: public int hammingWeight(int n) { int count = 0; while (n ! = 0) { n &= (n - 1); count++; } return count; } JavaScript Code: function hammingWeight 三、其他解法 3.1 平衡算法 Java Code: public int hammingWeight(int n) { n = (n & 0x55555555) + ((n >>> 1) &

    62110发布于 2020-02-13
  • 来自专栏福大大架构师每日一题

    2021-10-23:位1的个数。编写一个函数,输入是一个无符号

    代码如下: package main import "fmt" func main() { n := 5 if true { ret := hammingWeight1 (n) fmt.Println(ret) } if true { ret := hammingWeight2(uint32(n)) fmt.Println func hammingWeight1(n int) int { bits := 0 rightOne := 0 for n ! 0 { bits++ rightOne = n & (-n) n ^= rightOne } return bits } func hammingWeight2

    56610发布于 2021-10-23
  • 来自专栏编程小王

    【优选算法篇】位运算小课堂:从入门到精通的奇妙之旅(上篇)

    (0) → 结果 0 → arr = [0] i = 1 → 调用 hammingWeight(1) → 结果 1 → arr = [0, 1] i = 2 → 调用 hammingWeight(2) → 结果 1 → arr = [0, 1, 1] i = 3 → 调用 hammingWeight(3) → 结果 2 → arr = [0, 1, 1, 2] i = 4 → 调用 hammingWeight 调用 hammingWeight 时间复杂度为 O(32),即 O(1)。 调用 hammingWeight(5): 5 的二进制表示为:0101。 可优化方向: 优化 hammingWeight 函数,利用 n & (n - 1) 方法快速清除最低位的 1,减少迭代次数 优化后的辅助函数 int hammingWeight(int n) {

    51411编辑于 2024-12-24
  • 来自专栏猿计划

    剑指Offer LeetCode 面试题15. 二进制中1的个数

    import java.util.Arrays; class Solution { static public int hammingWeight(int n) { int return num; } public static void main(String[] args) { System.out.println(hammingWeight import java.util.Arrays; class Solution { static public int hammingWeight(int n) { int return num; } public static void main(String[] args) { System.out.println(hammingWeight

    41520发布于 2020-07-28
  • 来自专栏计算机视觉与深度学习基础

    Leetcode 191 Number of 1 Bits

    class Solution { public: int hammingWeight(uint32_t n) { int res = 0; while(n) in understanding the better functions. // It uses 24 arithmetic operations (shift, add, and). int hammingWeight known implementation on machines with slow multiplication. // It uses 17 arithmetic operations. int hammingWeight machines with fast multiplication. // It uses 12 arithmetic operations, one of which is a multiply. int hammingWeight

    70850发布于 2018-01-12
  • 来自专栏笔记c

    力扣刷题笔记--剑指 Offer 15. 二进制中1的个数

    注意:本题与主站(力扣) 191 题相同:力扣 代码 python代码1——bin()函数 class Solution: def hammingWeight(self, n: int) -> python代码2——使用n&(n−1) class Solution: def hammingWeight(self, n: int) -> int: res = 0 class Solution: def hammingWeight(self, n: int) -> int: res = 0 while n: == 0 java代码: public class Solution { // you need to treat n as an unsigned value public int hammingWeight

    50830编辑于 2022-11-15
  • 来自专栏SnailTyan

    Leetcode 191. Number of 1 Bits

    Solution Version 1 class Solution { public: int hammingWeight(uint32_t n) { int count = 0 n >>= 1; } return count; } }; Version 2 class Solution { public: int hammingWeight

    49120发布于 2019-05-25
  • 来自专栏Bingo的深度学习杂货店

    Q191 Number of 1 Bits

    Python实现: class Solution(object): def hammingWeight(self, n): """ :type n: int """ return sum([int(x) for x in bin(n)[2:] if x == '1']) a = 11 b = Solution() print(b.hammingWeight

    57560发布于 2018-04-25
  • 来自专栏freesan44

    LeetCode 191. 位1的个数

    解题思路 class Solution: def hammingWeight(self, n: int) -> int: strI = bin(n)#转成二进制 1") if __name__ == '__main__': nums = 11111111111111111111111111111101 result = Solution().hammingWeight

    25510编辑于 2021-12-06
  • 来自专栏武培轩的专栏

    Leetcode#191. Number of 1 Bits(位1的个数)

    Solution191 solution191 = new Solution191(); int n = 11; System.out.println(solution191.hammingWeight * 用Integer.bitCount函数统计参数n转成2进制后有多少个1 * * @param n * @return */ public int hammingWeight * * @param n * @return */ public int hammingWeight_2(int n) { int count = /** * 用flag来与n的每位做位于运算,来判断1的个数 * * @param n * @return */ public int hammingWeight

    62220发布于 2018-09-28
  • 来自专栏福大大架构师每日一题

    2023-07-11:给定正整数 n, 返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。 输入:n =

    numbers with remaining length and available digits func numberRest(offset, status int) int { c := hammingWeight = 10 } return ans } // Returns the number of set bits (1s) in a binary representation func hammingWeight int len); int process(int offset, int status, int n); int numberRest(int offset, int status); int hammingWeight int len); int process(int offset, int status, int n); int numberRest(int offset, int status); int hammingWeight ^ (1 << first), n); } return ans; } int numberRest(int offset, int status) { int c = hammingWeight

    78120编辑于 2023-07-25
  • 来自专栏用户2133719的专栏

    《剑指 offer》刷题记录之:位运算

    上述解法的 java 实现如下: public class Solution { public int hammingWeight(int n) { int ans = 0; 该方法的 java 实现如下: public class Solution { public int hammingWeight(int n) { int ans = 0; 基于上述方法的 java 实现如下: public class Solution { public int hammingWeight(int n) { int res = 0;

    83820发布于 2020-08-14
  • 来自专栏猿计划

    剑指Office-二进制中1的个数

    and deletion) public class Solution { // you need to treat n as an unsigned value public int hammingWeight deletion) 提交 public class Solution { // you need to treat n as an unsigned value public int hammingWeight 0x3f; } 解法2 public class Solution { // you need to treat n as an unsigned value public int hammingWeight

    38220发布于 2020-07-28
  • 来自专栏chenjx85的技术专栏

    leetcode-191-Number of 1 Bits

    : 1 Explanation: Integer 128 has binary representation 00000000000000000000000010000000 要完成的函数: int hammingWeight 代码如下:(附详解) int hammingWeight(uint32_t n) { int res=0; for(int i=0;i<32;i++)

    38620发布于 2019-03-21
  • 来自专栏刷题笔记

    【LeetCode】191. 位1的个数

    -1-bits 很神奇的位运算,当然不是我想的,我看的答案~ n = n&(n-1),每次都会清空末尾的一个1,全清空之后就为 0; class Solution { public: int hammingWeight n-1; count++; } return count; } }; 前面的人比较狠 class Solution { public: int hammingWeight

    33710发布于 2020-06-23
  • 来自专栏赵俊的Java专栏

    LeetCode 191 Number of 1 Bits

    num & 1 后判断为 1, 则计数增加 1, 然后将右移一位 num >>= 1, 以此类推, 直到移位 32 次. public class Solution { public int hammingWeight --- 0000 由于每次都把最低位的 1 变为 0 了, 直到为 0, 那么这种个编程变了几次就说明有多少个 1. public class Solution { public int hammingWeight

    47020发布于 2019-12-29
  • 来自专栏前端小叙

    leetcode 191 二进制中1的个数 js 实现

    er-jin-zhi-zhong-1de-ge-shu-lcof /** * @param {number} n - a positive integer * @return {number} */ // var hammingWeight // 时间复杂度 O(k),k=32, 空间复杂度 O(1) // var hammingWeight = function(n) { // let num=0 // let arr = ==0){ // num++; // } // } // return num; // }; //位运算优化 var hammingWeight

    1.1K10编辑于 2022-09-24
领券