【位運算】兩整數之和(medium)

兩整數之和(medium)

  • 題?描述:
  • 解法(位運算):
  • 代碼
  • 復雜度分析

題?鏈接: 371. 兩整數之和

題?描述:

給你兩個整數 a 和 b ,不使? 運算符 + 和 - ,計算并返回兩整數之和。
?例 1:
輸?:a = 1, b = 2
輸出:3
?例 2:
輸?:a = 2, b = 3
輸出:5
提?:
-1000 <= a, b <= 1000

解法(位運算):

算法思路:
? 異或 ^ 運算本質是「?進位加法」;
? 按位與 & 操作能夠得到「進位」;
? 然后?直循環進?,直到「進位」變成 0 為?
可以發現,對于整數 a 和 b:
在不考慮進位的情況下,其無進位加法結果為 a⊕b。
而所有需要進位的位為 a & b,進位后的進位結果為 (a & b) << 1。
于是,我們可以將整數 a 和 b 的和,拆分為 a 和 b 的無進位加法結果與進位結果的和。因為每一次拆分都可以讓需要進位的最低位至少左移一位,又因為 a 和 b 可以取到負數,所以我們最多需要 log(max_int) 次拆分即可完成運算。
因為有符號整數用補碼來表示,所以以上算法也可以推廣到 0 和負數。

代碼

class Solution {public int getSum(int a, int b) {while (b != 0) {int carry = (a & b) << 1;// 計算進位a = a ^ b;// 先算出?進位相加的結果b = carry;}return a;}
}

復雜度分析

時間復雜度:O(log(max_int)),其中我們將執行位運算視作原子操作。
空間復雜度:O(1)。

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

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

相關文章

現代密碼學入門 | 現代密碼學核心特點介紹

在當今互聯互通的世界中&#xff0c;數字數據在全球范圍內不斷流動&#xff0c;安全通信和數據保護的需求從未如此迫切。現代密碼學作為數字防御的先鋒&#xff0c;提供了一系列復雜的技術和算法&#xff0c;以保護信息免受窺探和惡意行為的侵害。 現代密碼學是從其古典前身—…

Redis分布式鎖深度解析與最佳實踐

1 2 Redis分布式鎖實現方式確實是經典問題&#xff0c;下面我將系統性地分析這個方案及其演進過程&#xff0c;并給出生產級的解決方案。 一、基礎方案及其缺陷 1. 初始實現方式 SETNX lock_key unique_value # 嘗試獲取鎖 EXPIRE lock_key 30 # 設置過期時間 …

Hive自定義函數案例(UDF、UDAF、UDTF)

目錄 前提條件 背景 概念及適用場景 UDF&#xff08;User-Defined Function&#xff09; 概念 適用場景 UDAF&#xff08;User-Defined Aggregate Function&#xff09; 概念 適用場景 UDTF&#xff08;User-Defined Table-Generating Function&#xff09; 概念 適…

Go語言的原子操作

當我們想要對某個變量并發安全的修改&#xff0c;除了使用官方提供的mutex&#xff0c;還可以使用sync/atomic包的原子操作&#xff0c;它能夠保證對變量的讀取或修改期間不被其他的協程所影響。 Golang提供的原子操作都是非侵入式的&#xff0c;由標準庫sync/atmoic包提供&am…

QNAP MEMOS 域名訪問 SSL(Lucky)

注意&#xff1a;下述是通過ssh、docker-compose方式安裝docker的&#xff0c;不是直接在container station中安裝的哈&#xff01;&#xff01;&#xff01; 一、編輯docker-compose.yml文件 用“#”號標識的&#xff0c;在保存文件的時候建議去掉&#xff0c;不然有時候會出…

C#實現遠程鎖屏

前言 這是一次提前下班沒有鎖屏進而引發的一次思考后的產物&#xff0c;思考的主要場景是當人離開電腦后&#xff0c;怎么能控制電腦鎖屏&#xff0c;避免屏幕上的聊天記錄被曝光。 首先想到通過系統的電源計劃設置閑置超時時間熄屏&#xff0c;這可能是最接近場景的解決方案&a…

[Protobuf]常見數據類型以及使用注意事項

[Protobuf]常見數據類型以及使用注意事項 水墨不寫bug 文章目錄 一、基本數據類型1、字段2、字段的修飾規則 二、自定義數據類型1、message類型2、enum類型3、Any類型4、oneof類型5、map類型 三、小工具1.hexdump2.decode 四、注意事項 一、基本數據類型 protobuf 支持多種基礎…

JS分支和循環

程序的執行順序 在程序開發中&#xff0c;程序有三種不同的執行順序 1.順序執行 2.分支執行 3.循環執行 程序的代碼塊 <script>//一個代碼塊{var num11var num22var num3num1num2}//一個休想var info{name:"chen",age:18} 1.if分支語句&#xff08;單分支語句&…

Android 開發 Kotlin 全局大喇叭與廣播機制

在 Android 開發中&#xff0c;廣播機制就像一個神通廣大的 “消息快遞員”&#xff0c;承擔著在不同組件間傳遞信息的重任。Kotlin 語言的簡潔優雅更使其在廣播機制的應用中大放異彩。今天&#xff0c;就讓我們一同深入探索 Android 開發中 Kotlin 全局大喇叭與廣播機制的奧秘…

rabbitmq AI復習

RabbitMq rabbitmq &#x1f9d1;?&#x1f4bb; User 幫我復習rabbitmq相關知識&#xff0c;我是一個經驗豐富的程序員 &#x1f916; Assistant 好的&#xff01;很高興能通過這種方式幫你復習或學習 RabbitMQ 的知識。按照你說的流程&#xff0c;我們從完全零基礎開始&…

計算機視覺---YOLOv5

YOLOv5理論講解 一、YOLOv5 整體架構解析 YOLOv5 延續了 YOLO 系列的 單階段目標檢測框架&#xff0c;包含 主干網絡&#xff08;Backbone&#xff09;、頸部網絡&#xff08;Neck&#xff09; 和 檢測頭&#xff08;Head&#xff09;&#xff0c;但在結構設計上更注重 輕量化…

C++多重繼承詳解與實戰解析

#include <iostream> using namespace std; //基類&#xff0c;父類 class ClassA { public:void displayA() {std::cout << "Displaying ClassA" << std::endl;}void testFunc(){std::cout << "testFunc ClassA" << std::e…

單細胞注釋前沿:CASSIA——無參考、可解釋、自動化細胞注釋的大語言模型

細胞類型注釋是單細胞RNA-seq分析的重要步驟&#xff0c;目前有許多注釋方法。大多數注釋方法都需要計算和特定領域專業知識的結合&#xff0c;而且經常產生不一致的結果&#xff0c;難以解釋。大語言模型有可能在減少人工輸入和提高準確性的同時擴大可訪問性&#xff0c;但現有…

STM32Cubemx-H7-17-麥克納姆輪驅動

前言 --末尾右總體的.c和.h 本篇文章把麥克納姆輪的代碼封裝到.c和.h&#xff0c;使用者只需要根據輪子正轉的方向&#xff0c;在.h處修改定義方向引腳&#xff0c;把輪子都統一正向后&#xff0c;后面的輪子驅動就可以正常了&#xff0c;然后直接調用函數驅動即可。 設置滿…

文檔核心結構優化(程序C++...)

文檔核心結構優化 一、文檔核心結構優化二、C關鍵特性詳解框架2.1 從C到C的范式遷移 三、深度代碼解析模板3.1 現代C特性分層解析 四、C vs C 關鍵差異矩陣五、交互式文檔設計策略5.1 三維學習路徑5.2 代碼缺陷互動區 六、現代C特性演進圖七、性能優化可視化呈現&#xff08;深…

PyTorch ——torchvision數據集使用

如果下載的很慢&#xff0c;可以試試下面這個

純前端實現圖片偽3D視差效果

作者&#xff1a;vivo 互聯網前端團隊- Su Ning 本文通過depth-anything獲取圖片的深度圖&#xff0c;同時基于pixi.js&#xff0c;通過著色器編程&#xff0c;實現了通過深度圖驅動的偽3D效果。該方案支持鼠標/手勢與手機陀螺儀雙模式交互&#xff0c;在保證性能的同時&#x…

英語寫作中“專注于”focus on、concentrate的用法

Focus on在論文寫作中常用&#xff0c;指出研究點&#xff0c;例如&#xff1a; There are three approaches to achieving ID authentication. Our study will focus on ……&#xff08;有三種途徑實現身份認證&#xff0c;我們的研究專注于……&#xff09; concentrate &…

go環境配置

下載對應版本的 go 版本 https://go.dev/dl/ 配置 vim ~/.zshrc export GOROOT/usr/local/go export PATH$PATH:$GOROOT/binsource ~/.zshrc >>>>>> go versiongoland 配置&#xff1a; &#x1f50d; 一、什么是GOPATH&#xff1f; GOPATH 是舊的項目結…

AI Agent智能體:底層邏輯、原理與大模型關系深度解析·優雅草卓伊凡

AI Agent智能體&#xff1a;底層邏輯、原理與大模型關系深度解析優雅草卓伊凡 一、AI Agent的底層架構與核心原理 1.1 AI Agent的基本構成要素 AI Agent&#xff08;人工智能代理&#xff09;是一種能夠感知環境、自主決策并執行行動的智能系統。其核心架構包含以下關鍵組件…