LeetCode【劍指offer】系列(位運算篇)

劍指offer15.二進制中1的個數

題目鏈接

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

思路一:最樸素的想法,每次判斷最低位是否為1,然后進行統計,判斷完右移一位。

通過代碼:

class Solution {
public:int hammingWeight(uint32_t n) {int res = 0;while(n > 0){if(n & 1)res++;n >>= 1;}return res;}
};

思路二:還可以更快。觀察這個運算:n & (n?1),其預算結果恰為把n的二進制位中的最低位的1變為0之后的結果。

通過代碼:

class Solution {
public:int hammingWeight(uint32_t n) {int res = 0;while(n > 0){n &= n - 1;res++;}return res;}
};

劍指offer16.數值的整數次方

題目鏈接

題目:實現pow(x, n) ,即計算 x 的 n 次冪函數(即,$ x^n $)。

思路:快速冪。不過需要注意負數的處理。由此引出另一個問題,-2^31轉換為正數后是超過int的范圍的,需要用long long

通過代碼:

class Solution {
public:double quickPow(double x, long long n) {double res = 1.0;while(n > 0){if(n & 1){res *= x;n--;}x = x * x;n >>= 1;}return res;}double myPow(double x, int n) {if(n < 0)return 1.0 / quickPow(x, -1 * (long long) n);return quickPow(x, n);}
};

劍指offer56-I.數組中數字出現的次數

題目鏈接

題目:整數數組sockets記錄了一個襪子禮盒的顏色分布情況,其中sockets[i]表示該襪子的顏色編號。禮盒中除了一款撞色搭配的襪子,每種顏色的襪子均有兩只。請設計一個程序,在時間復雜度O(n),空間復雜度O(1)內找到這雙撞色搭配襪子的兩個顏色編號。

思路:分組異或。如果除了一個數字以外,其他數字都出現了兩次,對這個數組進行全員異或就能快速找到這個數字。由此,針對這道題,將那兩個不同的數字拆分到兩個數組中,并且每個數組中,其他數字都出現了兩次就得到了本題解法。

  1. 先對所有數字進行一次異或,得到兩個出現一次的數字的異或值。
  2. 在異或結果中找到任意為 1 的位。
  3. 根據這一位對所有的數字進行分組。
  4. 在每個組內進行異或操作,得到兩個數字。

通過代碼:

class Solution {
public:vector<int> sockCollocation(vector<int>& sockets) {int ret = 0;for(int n : sockets)ret ^= n;int div = 1;while((ret & div) == 0)div <<= 1;int a = 0, b = 0;for(int n : sockets){if(n & div)a ^= n;elseb ^= n;}return vector<int> {a, b};}
};

劍指offer56-II.數組中數字出現的次數

題目鏈接

題目:教學過程中,教練示范一次,學員跟做三次。該過程被混亂剪輯后,記錄于數組actions,其中actions[i]表示做出該動作的人員編號。請返回教練的編號。

思路:欣賞一下即可。考慮數字的二進制形式,對于出現三次的數字,各二進制位 出現的次數都是 3 的倍數。因此,統計所有數字的各二進制位中 1 的出現次數,并對 3 求余,結果則為只出現一次的數字。

通過代碼:

class Solution {
public:int trainingPlan(vector<int>& actions) {int ones = 0, twos = 0;for(int action : actions){ones = ones ^ action & ~twos;twos = twos ^ action & ~ones;}return ones;}
};

劍指offer65.不用加減乘除做加法

題目鏈接

題目:計算機安全專家正在開發一款高度安全的加密通信軟件,需要在進行數據傳輸時對數據進行加密和解密操作。假定dataAdataB分別為隨機抽樣的兩次通信的數據量:

  • 正數為發送量
  • 負數為接受量
  • 0 為數據遺失

請不使用四則運算符的情況下實現一個函數計算兩次通信的數據量之和(三種情況均需被統計),以確保在數據傳輸過程中的高安全性和保密性。

思路:數字邏輯中的半加器。本位和c相當于異或運算,進位相當于與運算之后再左移一位。

通過代碼:

class Solution {
public:int encryptionCalculate(int dataA, int dataB) {while(dataB){int c = (dataA & dataB) << 1;dataA ^= dataB;dataB = c;}return dataA;}
};

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

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

相關文章

前端路由緩存實現

場景&#xff1a;以一體化為例&#xff1a;目前頁面涉及頁簽和大量菜單路由&#xff0c;用戶想要實現頁面緩存&#xff0c;即列表頁、詳情頁甚至是編輯彈框頁都要實現數據緩存。 方案&#xff1a;使用router-view的keep-alive實現 。 一、實現思路 1.需求梳理 需要緩存模塊&…

Buildroot編譯過程中下載源碼失敗

RK3588編譯編譯一下recovery&#xff0c;需要把buildroot源碼編譯一遍。遇到好幾個文件都下載失敗&#xff0c;如下所示 pm-utils 1.4.1這個包下載失敗&#xff0c;下載地址http://pm-utils.freedesktop.org/releases 解決辦法&#xff0c;換個網絡用windows瀏覽器下載后&…

Operator 開發入門系列(一):Hello World

背景 我們公司最近計劃將產品遷移到 Kubernetes 環境。 為了更好地管理和自動化我們的應用程序&#xff0c;我們決定使用 Kubernetes Operator。 本系列博客將記錄我們學習和開發 Operator 的過程&#xff0c;希望能幫助更多的人入門 Operator 開發。 目標讀者 對 Kubernete…

Java基礎知識面試題(已整理Java面試寶典pdf版)

什么是Java Java是一門面向對象編程語言&#xff0c;不僅吸收了C語言的各種優點&#xff0c;還摒棄了C里難以理解的多繼承、指針等概念&#xff0c;因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表&#xff0c;極好地實現了面向對象理論…

科學視角下的打坐:身心獲益的實證探究

在快節奏的現代生活中&#xff0c;人們在追求物質豐富的同時&#xff0c;也愈發關注身心的健康與平衡。古老的打坐修行方式&#xff0c;正逐漸走進科學研究的視野&#xff0c;并以大量實證數據展現出對人體多方面的積極影響。? 什么是打坐&#xff1a; 打坐是一種養生健身法…

javaSE————網絡編程套接字

網絡編程套接字~~~~~ 好久沒更新啦&#xff0c;藍橋杯爆掉了&#xff0c;從今天開始爆更嗷&#xff1b; 1&#xff0c;網絡編程基礎 為啥要有網絡編程呢&#xff0c;我們進行網絡通信就是為了獲取豐富的網絡資源&#xff0c;說實話真的很神奇&#xff0c;想想我們躺在床上&a…

MySQL性能調優(三):MySQL中的系統庫(mysql系統庫)

文章目錄 MySQL性能調優數據庫設計優化查詢優化配置參數調整硬件優化 MySQL中的系統庫1.5.Mysql中mysql系統庫1.5.1.權限系統表1.5.2.統計信息表1.5.2.1.innodb_table_stats1.5.2.2.innodb_index_stats 1.5.3.日志記錄表1.5.3.1. general_log1.5.3.2. slow_log 1.5.4.InnoDB中的…

多個路由器互通(靜態路由)無單臂路由(簡單版)

多個路由器互通&#xff08;靜態路由&#xff09;無單臂路由&#xff08;簡單版&#xff09; 開啟端口并配ip地址 維護1 Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shutdown Router(config-if)#ip address 192.168.10.254 255.255.255.0 Ro…

關于 AI驅動的智慧家居、智慧城市、智慧交通、智慧醫療和智慧生活 的詳細解析,涵蓋其定義、核心技術、應用場景、典型案例及未來趨勢

以下是關于 AI驅動的智慧家居、智慧城市、智慧交通、智慧醫療和智慧生活 的詳細解析&#xff0c;涵蓋其定義、核心技術、應用場景、典型案例及未來趨勢&#xff1a; 一、AI智慧家居 1. 定義與核心功能 定義&#xff1a;通過AI與物聯網&#xff08;IoT&#xff09;技術&#…

【ESP32|音頻】一文讀懂WAV音頻文件格式【詳解】

簡介 最近在學習I2S音頻相關內容&#xff0c;無可避免會涉及到關于音頻格式的內容&#xff0c;所以剛開始接觸的時候有點一頭霧水&#xff0c;后面了解了下WAV相關內容&#xff0c;大致能夠看懂wav音頻格式是怎么樣的了。本文主要為后面ESP32 I2S音頻系列文章做鋪墊&#xff0…

端側大模型綜述On-Device Language Models: A Comprehensive Review

此為機器翻譯&#xff0c;僅做個人學習使用 設備端語言模型&#xff1a;全面回顧 DOI&#xff1a;10.48550/arXiv.2409.00088 1 摘要 大型語言模型 &#xff08;LLM&#xff09; 的出現徹底改變了自然語言處理應用程序&#xff0c;由于減少延遲、數據本地化和個性化用戶體驗…

推流265視頻,網頁如何支持顯示265的webrtc

科技發展真快&#xff0c;以前在網頁上&#xff08;一般指谷歌瀏覽器&#xff09;&#xff0c;要顯示265的視頻流&#xff0c;都是很雞肋的辦法&#xff0c;要么轉碼&#xff0c;要么用很慢的hls&#xff0c;體驗非常不好&#xff0c;而今谷歌官方最新的瀏覽器已經支持265的web…

redis的sorted set的應用場景

Redis 的 Sorted Set&#xff08;有序集合&#xff0c;簡稱 ZSet&#xff09; 結合了 Set 的去重特性 和 按分數&#xff08;score&#xff09;排序 的特性&#xff0c;非常適合需要 高效排序 或 范圍查詢 的場景。以下是它的典型應用場景及示例&#xff1a; 實時排行榜 場景&…

18-21源碼剖析——Mybatis整體架構設計、核心組件調用關系、源碼環境搭建

學習視頻資料來源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目錄 1. 架構設計2. 核心組件及調用關系3. 源碼環境搭建3.1 測試類3.2 實體類3.3 核心配置文件3.4 映射配置文件3.5 遇到的問題 1. 架構設計 Mybatis整體架構分為4層&#xff1a; 接口層&#…

未啟用CUDA支持的PyTorch環境** 中使用GPU加速解決方案

1. 錯誤原因分析 根本問題&#xff1a;當前安裝的PyTorch是CPU版本&#xff0c;無法調用GPU硬件加速。當運行以下代碼時會報錯&#xff1a;model YOLO("yolov8n.pt").to("cuda") # 或 .cuda()2. 解決方案步驟 步驟1&#xff1a;驗證CUDA可用性 在Pyth…

JVM-基于Hotspot

前言 Java虛擬機&#xff08;Java Virtual Machine簡稱JVM&#xff09;是運行所有Java程序的抽象計算機&#xff0c;是Java語言的運行環境&#xff0c;其主要任務為將字節碼裝載到內部&#xff0c;解釋/編譯為對應平臺上的機器指令執行。 Java虛擬機規范定義了一個抽象的——…

智能合約安全審計平臺——可視化智能合約漏洞掃描

目錄 可視化智能合約漏洞掃描 —— 理論、實踐與安全保障1. 引言2. 理論背景與漏洞原理2.1 智能合約簡介2.2 常見漏洞類型2.3 漏洞掃描與安全評估原理3. 系統架構與工作流程3.1 系統總體架構3.2 模塊說明4. 漏洞掃描流程詳解4.1 代碼上傳與靜態解析4.2 漏洞模式檢測4.3 風險評估…

【MySQL數據庫】數據類型詳解

目錄 數據類型tinyint類型(整形)bit類型小數浮點數 float、doubledecimal 字符串類型charvarcharchar與varchar的比較 日期時間類型enum和set總結 數據類型 tinyint類型(整形) 例&#xff1a; mysql> create table tt1(num tinyint);mysql> insert into tt1 values(1)…

咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包

咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包&#xff08;內有教程&#xff09; 刷機教程簡單說明&#xff1a; 1、把下載好的刷機包&#xff0c;U盤里建立一個upgrade文件夾&#xff0c;固件放入此文件夾里&#xff0c;放入U盤中&#xff0c;注意升級包為壓縮包不要對…

CS61A:STRING REPRESENTATION

Python 規定所有對象都應該產生兩種不同的字符串表示形式&#xff1a;一種是人類可解釋的文本&#xff0c;另一種是 Python 可解釋的表達式。字符串的構造函數 str 返回一個人類可讀的字符串。在可能的情況下&#xff0c;repr 函數會返回一個計算結果相等的 Python 表達式。rep…