?算法OJ?位操作實戰【計數】(C++ 實現)

191. Number of 1 Bits

Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight).

int hammingWeight(uint32_t n) {int count = 0;while (n) {count += n & 1;  // 檢查最低位是否為 1n >>= 1;         // 右移一位}return count;
}int main() {uint32_t n = 11; // 二進制為 1011cout << "Number of set bits: " << hammingWeight(n) << endl; // 輸出 3return 0;
}

1356. Sort Integers by The Number of 1 Bits

You are given an integer array arr. Sort the integers in the array in ascending order by the number of 1’s in their binary representation and in case of two or more integers have the same number of 1’s you have to sort them in ascending order.
Return the array after sorting it.

給定一個整數數組 arr,要求按照以下規則對數組進行排序:

  • 按二進制表示中 1 的個數升序排序。
  • 如果兩個數的二進制表示中 1 的個數相同,則按數值大小升序排序。

最后返回排序后的數組。

Easy Understanding Version

int countOnes(int num) {int count = 0;while (num) {count += num % 2;num = num / 2;}return count;
}bool wayToSort(int i, int j) {int countA = countOnes(i);int countB = countOnes(j);if (countA == countB) {return i < j;}return cntA < cntB;
}
vector<int> sortByBits(vector<int>& arr) {sort(arr.begin(), arr.end(), wayToSort);return arr;
}

Compact Version

int countOnes(int n) {return __builtin_popcount(n);  // 計算二進制中 1 的個數
}vector<int> sortByBits(vector<int>& arr) {sort(arr.begin(), arr.end(), [](int a, int b) {int countA = countOnes(a);int countB = countOnes(b);if (countA == countB) {return a < b;  // 如果 1 的個數相同,按數值升序排序}return countA < countB;  // 否則按 1 的個數升序排序});return arr;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72156.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從二維隨機變量到多維隨機變量

二維隨機變量 設 X X X和 Y Y Y是定義在同一樣本空間 Ω \varOmega Ω上的兩個隨機變量&#xff0c;稱由它們組成的向量 ( X , Y ) (X, Y) (X,Y)為二維隨機變量&#xff0c;亦稱為二維隨機向量&#xff0c;其中稱 X X X和 Y Y Y是二維隨機變量的分量。 采用多個隨機變量去描述…

RabbitMQ系列(一)架構解析

RabbitMQ 架構解析 RabbitMQ 是一個基于 AMQP 協議的開源消息中間件&#xff0c;其核心架構通過多組件協作實現高效、可靠的消息傳遞。以下是其核心組件與協作流程的詳細說明&#xff1a; 一、核心組件與功能 Broker&#xff08;消息代理服務器&#xff09; RabbitMQ 服務端核…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_list_init

ngx_list_init 定義在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…

Linux切換Python版本

1、更新apt sudo apt update2、查詢python安裝路徑 which python 或者which python33、查詢安裝版本 # 查看所有以 "python" 開頭的命令&#xff08;包括版本號&#xff09; ls -l 安裝路徑* 例如 ls -l /usr/bin/python*4、修改軟連接 udo unlink /usr/bin/pyt…

Spring Cloud之注冊中心之Nacos的使用

目錄 Naacos 服務注冊/服務發現 引?Spring Cloud Alibaba依賴 引入Nacos依賴 引入Load Balance依賴 配置Nacos地址 服務端調用 啟動服務 Naacos Nacos是Spring Cloud Alibaba的組件, Spring Cloud Alibaba遵循Spring Cloud中定義的服務注冊, 服務發現規范. 因此使?Na…

使用通義萬相Wan2.1進行視頻生成

使用通義萬相Wan2.1進行視頻生成 源代碼準備運行環境準備創建Python虛擬環境并激活安裝依賴包 模型下載生成視頻官網的視頻生成例子簡單描述場景視頻生成示例詳細描述場景視頻生成示例 最近通義萬相開源了其視頻生成模型。模型有兩個版本&#xff0c;一個是1.3B的&#xff0c;一…

鴻蒙HarmonyOS 開發簡介

鴻蒙開發入門教程 一、技術簡介 鴻蒙操作系統&#xff08;HarmonyOS&#xff09;是面向萬物互聯時代的全場景分布式操作系統&#xff0c;具備分布式軟總線、分布式數據管理、分布式任務調度等核心能力&#xff0c;能讓設備間實現無縫連接與協同&#xff0c;為用戶提供統一、流…

docker和containerd從TLS harbor拉取鏡像

私有鏡像倉庫配置了自簽名證書&#xff0c;https訪問&#xff0c;好處是不需要處理免費證書和付費證書帶來的證書文件變更&#xff0c;證書文件變更后需要重啟服務&#xff0c;自簽名證書需要將一套客戶端證書存放在/etc/docker/cert.d目錄下&#xff0c;或者/etc/containerd/c…

linux ununtu通過nginx-1.6.2.tar.gz安裝nginx并安裝在自定義目錄XXX下 的步驟

Ubuntu 下通過源碼安裝 Nginx 1.6.2 到自定義目錄 /home/aot/nginx 的步驟 以下是將 Nginx 1.6.2 源碼包離線安裝到自定義目錄的詳細流程&#xff0c;包含依賴管理、編譯配置和服務管理&#xff1a; 一、準備工作 1. 下載源碼包和依賴&#xff08;需聯網環境準備&#xff09;…

C++ 變量的輸入輸出教程

一、變量的基本概念 在 C 中&#xff0c;變量是用于存儲數據的命名內存位置。在使用變量之前&#xff0c;需要先聲明它的類型和名稱&#xff0c;這樣編譯器才能為其分配適當大小的內存空間。例如&#xff1a; int age; // 聲明一個整型變量 age double salary; // 聲明一個…

React底層常見的設計模式

在React中&#xff0c;常見的設計模式為開發者提供了結構化和可重用的解決方案&#xff0c;有助于提高代碼的可維護性和可擴展性。以下是對React中幾種常見設計模式的詳細解析&#xff0c;并附上示例代碼和注釋&#xff1a; 1. 容器組件與展示組件模式&#xff08;Container/P…

【MATLAB例程】三維下的IMM(交互式多模型),模型使用CV(勻速)和CA(勻加速)

給出三維下的交互式多模型&#xff08;IMM&#xff09;matlab例程&#xff0c;模型使用勻速運動CV和勻加速運動CA&#xff0c;濾波使用EKF&#xff08;擴展卡爾曼濾波&#xff09; 文章目錄 代碼運行結果程序結構 代碼講解模型定義&#xff1a;軌跡生成&#xff1a;IMM核心流程…

物理內存組織與分配的核心概念

在 Linux 內核內存管理&#xff08;尤其是 Buddy System 伙伴系統&#xff09;中&#xff0c;node、zone、type 和 order 是描述物理內存組織與分配的核心概念。以下是它們的詳細解釋&#xff1a; 1. Node&#xff08;NUMA 節點&#xff09; 定義&#xff1a; 在 NUMA&#xf…

智科技賦能寵物關懷新時代

在科技日新月異的今天&#xff0c;智能寵物監控技術正悄然引領寵物護理領域的新變革。借助尖端的傳感器技術、高清攝像頭以及強大的數據分析能力&#xff0c;這些智能系統為寵物主人開辟了前所未有的寵物關懷途徑&#xff0c;讓愛與關懷跨越時空限制。 智能寵物監控系統的核心…

SOME/IP 教程知識點總結

總結關于SOME/IP的教程,首先通讀整個文件,理解各個部分的內容。看起來這個教程從介紹開始,講到了為什么在車輛中使用以太網,然后詳細講解了SOME/IP的概念、序列化、消息傳遞、服務發現(SOME/IP-SD)、發布/訂閱機制以及支持情況。 首先,我需要確認每個章節的主要知識點。…

playbin之autoplug_factories源碼剖析

一、autoplug_factories_cb /* Called when we must provide a list of factories to plug to pad with caps.* We first check if we have a sink that can handle the format and if we do, we* return NULL, to expose the pad. If we have no sink (or the sink does not…

58區間和+44開發商購買土地(前綴和)

58. 區間和&#xff08;第九期模擬筆試&#xff09; 題目描述 給定一個整數數組 Array&#xff0c;請計算該數組在每個指定區間內元素的總和。 輸入描述 第一行輸入為整數數組 Array 的長度 n&#xff0c;接下來 n 行&#xff0c;每行一個整數&#xff0c;表示數組的元素。…

laravel11設置中文語言包

安裝中文語言包 Laravel 11 默認沒有內置完整中文語言包&#xff0c;推薦使用第三方維護的完整翻譯&#xff1a; # 通過 Composer 安裝語言包 composer require laravel-lang/common --dev# 發布中文語言文件到項目 php artisan lang:add zh_CN這會自動將中文語言文件生成到 l…

智能文檔解析與語義分割:LlamaIndex 節點解析器模塊全解

節點解析器模塊 - LlamaIndex 文件內容的節點解析器 有幾種基于文件的節點解析器,它們會根據解析的內容類型(JSON、Markdown 等)創建節點。 最簡單的流程是將 FlatFileReader 與 SimpleFileNodeParser 結合使用,自動為每種內容類型選擇最佳節點解析器。然后,可以將基于…

實現遍歷Windows所有字體的基本屬性

參考podofo #include <windows.h> #include <string> #include <memory> #include <set> #include <unordered_map> #include <vector> #include <algorithm> #include <iostream> #include <iomanip> #include <fst…