Leetcode-每日一題【劍指 Offer 15. 二進制中1的個數】

題目

編寫一個函數,輸入是一個無符號整數(以二進制串的形式),返回其二進制表達式中數字位數為 '1' 的個數(也被稱為?漢明重量).)。

提示:

  • 請注意,在某些語言(如 Java)中,沒有無符號整數類型。在這種情況下,輸入和輸出都將被指定為有符號整數類型,并且不應影響您的實現,因為無論整數是有符號的還是無符號的,其內部的二進制表示形式都是相同的。
  • 在 Java 中,編譯器使用?二進制補碼?記法來表示有符號整數。因此,在上面的?示例 3?中,輸入表示有符號整數?-3

示例 1:

輸入:n = 11 (控制臺輸入 00000000000000000000000000001011)
輸出:3
解釋:輸入的二進制串 00000000000000000000000000001011?中,共有三位為 '1'。

示例 2:

輸入:n = 128 (控制臺輸入 00000000000000000000000010000000)
輸出:1
解釋:輸入的二進制串 00000000000000000000000010000000?中,共有一位為 '1'。

示例 3:

輸入:n = 4294967293 (控制臺輸入 11111111111111111111111111111101,部分語言中 n = -3)
輸出:31
解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位為 '1'。

提示:

  • 輸入必須是長度為?32?的?二進制串?。

解題思路

1.題目要求我們求出二進制表達式中數字位數為 '1' 的個數,首先我們需要知道一個規律,就是 n &(n - 1)后在 n 的二進制表達式中最低位為 1 的位數就會變為 0 ,

舉個例子:

2.那在知道了這個規律后我們就可以利用? n &(n - 1)這個公式求出 n 的二進制表達式中數字位數為 '1' 的個數,當 n 不等于0時我們就讓n &(n - 1)然后用 sum 記錄一下次數,直到n等于 0,我們返回 sum 即可

代碼實現

public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int sum = 0;while(n != 0){n = n & (n - 1);sum++;}return sum;}
}

測試結果

?

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

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

相關文章

如何安全地移動WSL 2 到另一個驅動器

當您擁有小型 SSD 并且適用于 Linux 的 Windows 子系統 (WSL) 的大小呈指數增長時,這真的很痛苦。沒有簡單的方法將 WSL 安裝移動到另一個驅動器。在這篇博客中,我將討論如何通過小步解決這個問題。 1.打開具有管理員訪問權限的 PowerShell或命令提示符…

【Docker】Windows下docker環境搭建及解決使用非官方終端時的連接問題

目錄 背景 Windows Docker 安裝 安裝docker toolbox cmder 解決cmder 連接失敗問題 資料獲取方法 背景 時常有容器方面的需求,經常構建調試導致測試環境有些混亂,所以想在本地構建一套環境,鏡像調試穩定后再放到測試環境中。 Windows …

多線程與高并發--------線程池

線程池 一、什么是線程池 在開發中,為了提升效率的操作,我們需要將一些業務采用多線程的方式去執行。 比如有一個比較大的任務,可以將任務分成幾塊,分別交給幾個線程去執行,最終做一個匯總就可以了。 比如做業務操…

Windows電腦快速搭建FTP服務教程

FTP介紹 FTP(File Transfer Protocol)是一種用于在計算機網絡上進行文件傳輸的標準協議。它提供了一種可靠的、基于客戶端-服務器模型的方式來將文件從一個主機傳輸到另一個主機。在本文中,我將詳細介紹FTP的工作原理、數據傳輸模式以及常見…

數據結構【第4章】——棧與隊列

隊列是只允許在一端進行插入操作、而在另-端進行刪除操作的線性表。 棧 棧與隊列:棧是限定僅在表尾進行插入和刪除操作的線性表。 我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom)&…

VBA技術資料MF42:VBA_從Excel中上面的單元格復制公式

【分享成果,隨喜正能量】唯有夢想才配讓你不安,唯有行動才能解除你的不安.繩鋸木斷,水滴石穿。也許你現在做的事情很小,只要你能日積月累的堅持下去,才會發現意義非凡。所謂的成功,便是別人失敗的時候你還在…

微服務與Nacos概述-2

微服務間消息傳遞 微服務是一種軟件開發架構,它將一個大型應用程序拆分為一系列小型、獨立的服務。每個服務都可以獨立開發、部署和擴展,并通過輕量級的通信機制進行交互。 應用開發 common模塊中包含服務提供者和服務消費者共享的內容 provider模塊是…

10-1_Qt 5.9 C++開發指南_Data Visualization實現數據三維顯示

Data Visualization 是 Qt 提供的用于數據三維顯示的模塊。在 Qt 5.7 以前只有商業版才有此模塊,而從Qt5.7 開始此模塊在社區版本里也可以免費使用了。Data Visualization 用于數據的三維顯示,包括三維柱狀圖、三維空間散點、三維曲面等。Data Visualiza…

鑒源實驗室丨汽車網絡安全攻擊實例解析(二)

作者 | 田錚 上海控安可信軟件創新研究院項目經理 來源 | 鑒源實驗室 社群 | 添加微信號“TICPShanghai”加入“上海控安51fusa安全社區” 引言:汽車信息安全事件頻發使得汽車行業安全態勢愈發緊張。這些汽車網絡安全攻擊事件,輕則給企業產品發布及產品…

高效數據傳輸:輕松上手將Kafka實時數據接入CnosDB

本篇我們將主要介紹如何在 Ubuntu 22.04.2 LTS 環境下,實現一個KafkaTelegrafCnosDB 同步實時獲取流數據并存儲的方案。在本次操作中,CnosDB 版本是2.3.0,Kafka 版本是2.5.1,Telegraf 版本是1.27.1 隨著越來越多的應用程序架構轉…

無涯教程-Perl - redo函數

描述 此函數將重新啟動當前循環,而不會強制判斷控制語句。塊中不再執行任何語句。如果存在繼續塊,將不會執行。如果指定了LABEL,則在LABEL標識的循環開始時重新開始執行。 語法 以下是此函數的簡單語法- redo LABELredo返回值 此函數不返回任何值。 例 以下是顯示其基本…

用友時空KSOA SQL注入漏洞復現(HW0day)

0x01 產品簡介 用友時空KSOA是建立在SOA理念指導下研發的新一代產品,是根據流通企業最前沿的I需求推出的統一的IT基礎架構,它可以讓流通企業各個時期建立的IT系統之間彼此輕松對話,幫助流通企業保護原有的IT投資,簡化IT管理&#…

以商業大數據技術助力數據合規流通體系建立,合合信息參編《數據經紀從業人員評價規范》團標

經國務院批準,由北京市人民政府、國家發展和改革委員會、工業和信息化部、商務部、國家互聯網信息辦公室、中國科學技術協會共同主辦的2023 全球數字經濟大會于近期隆重召開。由數交數據經紀(深圳)有限公司為主要發起單位,合合信息…

深度剖析堆棧指針

為什么打印root的值與&root->value的值是一樣的呢 測試結果: *號一個變量到底取出來的是什么? 以前我寫過一句話,就是說,如果看到一個*變量,那就是直逼這個變量所保存的內存地址,然后取出里面保存的…

Skeleton-Aware Networks for Deep Motion Retargeting

Skeleton-Aware Networks for Deep Motion Retargeting解析 摘要1. 簡介2. Related Work2.1 運動重定向(Motion Retargeting)2.2 Neural Motion Processing 3. 概述(Overview)4. 骨骼感知深度運動處理4.1 運動表征4.2 骨架卷積4.3…

Spring Boot + Vue3前后端分離實戰wiki知識庫系統<十二>--用戶管理單點登錄開發一

目標: 在上一次Spring Boot Vue3前后端分離實戰wiki知識庫系統<十一>--文檔管理功能開發三我們已經完成了文檔管理的功能模塊開發,接下來則開啟新模塊的學習---用戶登錄,這塊還是有不少知識點值得學習的,…

指針與引用:C語言中的內存魔法

開始本篇文章之前先推薦一個好用的學習工具,AIRIght,借助于AI助手工具,學習事半功倍。歡迎訪問:http://airight.fun/。 也把我學習過程中搜集的資料分享給大家,希望可以幫助大家少走彎路,鏈接:h…

機器人CPP編程基礎-02變量Variables

機器人CPP編程基礎-01第一個程序Hello World 基礎代碼都可以借助人工智能工具進行學習。 C #include<iostream>using namespace std;main() {//Declaring an integer type variable A, allocates 4 bytes of memory.int A4;cout<<A <<endl;//Prints the a…

Matlab繪制圓形(rectangle函數、viscircles函數和圓的參數方程)

基于matlab繪制圓形 一、rectangle函數 對于繪制圓心坐標為&#xff08;x&#xff0c;y&#xff09;半徑為r的圓形&#xff0c;函數為&#xff1a; x0; y0; r1; rectangle(Position, [x-r,y-r,2*r,2*r], Curvature, [1 1],EdgeColor, r); axis equalEdgeColor表示顏色 二、…

多版本node環境搭建切換管理NVM

Node.js NVM 全名 Node Version Management 一、Node 模塊對象 參考博客 Node 模塊對象 二、Node 多版本管理NVM &#xff08;1&#xff09;參考 Node 多版本管理 &#xff08;2&#xff09;github上NVM工具 nvm-windows mirrors / coreybutler / nvm-windows GitCode…