溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++如何求1的個數

發布時間:2022-03-17 16:10:07 來源:億速云 閱讀:394 作者:iii 欄目:大數據

本篇內容主要講解“c++如何求1的個數”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c++如何求1的個數”吧!

算法:

核心在于單個數字的1的個數的計算,其他的題目都是基于這個基礎來做的操作。

題目1:求1的個數

代碼實現:

func hammingWeight(num uint32) int {   count := 0   for i := 0; i < 32; i++ {     if num&(1<<i) != 0 {         count++     }   }   return count}// 算法:// 利用單個bit上面的 a&1=1 表示a=1;a&1=0 表示a=0

題目2:根據數字二進制下1的數目排序

代碼實現:

func sortByBits(arr []int) []int {    tmp := make(map[int][]int)    nums := []int{}    for _, a:=range arr {        n:=getCount(a)        v,ok:=tmp[n]        if !ok {            v = []int{a}            tmp[n] = v            nums = append(nums,n)        } else {            v = append(v,a)            tmp[n] = v        }        }    // 利用map將數組按照升序的方式排序    sort.Ints(nums)    res := []int{}    for _,v := range nums{        // 相同位數的數組里面也需要按照升序排序        sort.Ints(tmp[v])        res =append(res,tmp[v]...)    }    return res}func getCount(a int) int {    c := 0    for a != 0 {        if a&1 == 1 {            c++        }        a = a>>1    }    return c}

題目3: 二進制表示中質數個計算位置

代碼實現:

func countPrimeSetBits(L int, R int) int {    // 質數是只能被1和自己整除,R最大值是10^6,也就是2^20,所以質數如下    s := []int{2,3,5,7,11,13,17,19}    m := make(map[int]int)    for _,v:=range s {        m[v] = v    }    // 計算每個數中1的個數    c := 0    for i:=L;i<=R;i++ {        t := numCount(i)        if _,ok := m[t];ok {            c++        }    }    return c}func numCount(num int) int {    c := 0    for i:=0;i<64;i++ {        if num&(1<<i) != 0 {            c++        }    }    return c}

到此,相信大家對“c++如何求1的個數”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女