二進位操作: 一的補數 Number Complement_Leetcode #476

更新於 2024/08/22閱讀時間約 1 分鐘

題目敘述 476. Number Complement


給定一個整數num,請輸出對應的一的補數
也就是num二進位表達式的01對調,0換成1,1換成0。


測試範例

Example 1:

Input: num = 5
Output: 2
Explanation:

5 = 0b 101
01對調後
2 = 0b 010

Example 2:

Input: num = 1
Output: 0
Explanation:

1 = 0b 1
01對調後
0 = 0b 0

約束條件

Constraints:

  • 1 <= num < 2^31

num在 4 bytes整數範圍內。


演算法 使用XOR運算子特質


XOR運算子有一個很好的特質

1 XOR 1 = 0 完成了1 翻轉成 0 的計算

0 XOR 1 = 0 完成了0 翻轉成 1 的計算


先計算原本num需要的位元寬度,接著製造一個全1的 mask,兩者做XOR,

最後輸出就是num一的補數。


程式碼 使用XOR運算子特質


from math import floor
from math import log

class Solution:
def findComplement(self, num: int) -> int:

bits_length = floor( log(num, 2) + 1)

return num^( 2**bits_length - 1 )


額外補充,python內建一個取得位元寬度的function .bit_length()


class Solution:
def findComplement(self, num: int) -> int:

bit_mask = 2**num.bit_length() -1

return ( num ^ bit_mask )

複雜度分析

時間複雜度: O( 1 )

如果n無不限制範圍,那麼所需時間為位元寬度 = O( log n )

題目已經說是32bit的整數範圍內,可視為一次性的常數操作,所需時間為O(1)。


空間複雜度: O(1)

所用到的臨時變數占用的空間都是固定大小,為常數級別O(1)


Reference:

[1] Number Complement - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 Leetcode: 650. 2 Keys Keyboard 一開始初始化的時候,記事本上只有一個字元'A'。 只允許下列兩種操作 複製目前記事本上的整個字串。 貼上之前複製的內容,串接在尾端。 請問,最少需要幾個操作, 才能製造出內容都是 "AAA...A",長度為n的字串?
題目敘述 624. Maximum Distance in Arrays 給定一個輸入二維陣列arrays。 請計算的陣列距離是多少? 陣列距離的定義 = max | a - b | 其中 a, b 來自不同的一維陣列
題目敘述 860. Lemonade Change 假想一個經營檸檬水小舖的情境。 一杯檸檬水都賣$5 顧客付錢時只有三種可能,$5, $10 或 $ 20 初始時,檸檬水小舖沒有零錢。 給定一個顧客買檸檬水的付錢陣列bills,請問能不能滿足每一筆交易,並且找開零錢。 如果可以
題目敘述 Find K-th Smallest Pair Distance 給定一個輸入陣列nums和 參數k。 請找出第k小的pair distance是多少? pair distance定義為 abs( nums[i] - nums[j]), i 不等於j 也就是任意兩陣列元素差值的絕對值
題目敘述 149. Max Points on a Line 給定一串2維平面的點座標,請問最多有幾個點落在同一條直線上? 落在同一條直線也就是數學上所謂的"共線" colinear
題目敘述: 給定一個二維陣列的高與寬,並且給定起點位置座標。 請從起點位置開始順時針拜訪陣列元素,並且把沿路走過的座標記錄下來。 以陣列的形式返回答案。
題目敘述 Leetcode: 650. 2 Keys Keyboard 一開始初始化的時候,記事本上只有一個字元'A'。 只允許下列兩種操作 複製目前記事本上的整個字串。 貼上之前複製的內容,串接在尾端。 請問,最少需要幾個操作, 才能製造出內容都是 "AAA...A",長度為n的字串?
題目敘述 624. Maximum Distance in Arrays 給定一個輸入二維陣列arrays。 請計算的陣列距離是多少? 陣列距離的定義 = max | a - b | 其中 a, b 來自不同的一維陣列
題目敘述 860. Lemonade Change 假想一個經營檸檬水小舖的情境。 一杯檸檬水都賣$5 顧客付錢時只有三種可能,$5, $10 或 $ 20 初始時,檸檬水小舖沒有零錢。 給定一個顧客買檸檬水的付錢陣列bills,請問能不能滿足每一筆交易,並且找開零錢。 如果可以
題目敘述 Find K-th Smallest Pair Distance 給定一個輸入陣列nums和 參數k。 請找出第k小的pair distance是多少? pair distance定義為 abs( nums[i] - nums[j]), i 不等於j 也就是任意兩陣列元素差值的絕對值
題目敘述 149. Max Points on a Line 給定一串2維平面的點座標,請問最多有幾個點落在同一條直線上? 落在同一條直線也就是數學上所謂的"共線" colinear
題目敘述: 給定一個二維陣列的高與寬,並且給定起點位置座標。 請從起點位置開始順時針拜訪陣列元素,並且把沿路走過的座標記錄下來。 以陣列的形式返回答案。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
塵封的日子裡 消逝了多少朝陽 只剩斑駁的殘陽 灑在凋零的屋簷 推開那道門,一具枯槁的身軀正安睡在破爛的床舖上。房間裡散發出一股髒亂和腐朽的氣息,宛如死亡的氛圍。望著那蒼老的面容,我們難以想像她經歷過的掙扎和絕望。 生的最後一點希望 就這麼黯淡無光 獨自倖離群竄 無
Thumbnail
前言 話說繼美光退出超頻記憶體馬甲散熱片條市場好一陣子以後,於今年八月份推出了Pro系列產品 而產品線就包含了隨插即用的記憶體模組以及高速的固態硬碟SSD搶攻專業級電腦主機裝機市場 前一陣子也入手過一組16GB x2 kit 來玩、玩過之後對它的效能跟方便的隨插即用讚不絕口...
Thumbnail
從零開始學習投資(一):最重要的是投資心態! 第一篇文章中提到在投資開始錢該怎麼建立好心態,那麼心理建設完了到底該怎麼入場,入場後在過程中要注意那些事情,以及要怎麼持續精進自己好讓自己在投資這條路上走的更長遠,會是本文的焦點,文中會附上經過篩選適合初學者的我自己閱讀過的書籍以及常用的網站,供各位參
如果真的要為易經找出一個哲學性定位,個人認為那或許是,比起分析世界,更在意於探討人與世界之間的關係與位置,這是深藏內部的涵義
Thumbnail
Mengrai建立之蘭納王國控制泰國清邁一帶,勢力一度達到中國西雙版納傣族自治州,與拓地西南的元朝因爭奪今景洪市交惡,遭元朝於1301年遣劉深率大軍征討被其稱為「八百媳婦國」的蘭納,但大軍所及,軍需徵調徭役導致雲南少數民族不滿,紛起聯合反抗,加上不適熱帶叢林,於1302年蒙古兵鋒未至蘭納便被迫撤軍。
Thumbnail
很多新人會問,一進的時候有爸爸牽手走紅毯跟花童灑花,那婚禮二次進場到底還能做些什麼呢?超怕冷場的啦~別擔心,OKOH來告訴你,不擔心冷場的幾種二進方式,快看過來吧
Thumbnail
父母要求,男女雙方分開辦,女方辦訂婚+歸寧,男方則是結婚。 婚宴場地由我爸媽決定,最後選擇台南商務會館,除了宴客,會館也提供同一場地的舞台給我們進行儀式,並準備奉茶等瑣事。 我們的媒人婆請專業媒人婆來,給予需求和時間後,由他來排行程
Thumbnail
移工讀四技二專進修部 機械人才夯、11技專校院擬開班 2022-06-16 聯合報/ 記者 許維寧 /台北即時報導 李尚懿說,學校初期只和單一一間廠商合作,譬如可對準廠商訓練需求安排至同一個班級、方便做安排,預計上述廠商的移工將安排就讀機械科二專進修部。 鈺鵬國際管理顧問有限公司 5.異業結盟。
Thumbnail
書名:選三哲學    聚焦3件事,解決工作生活兩難,搞定你的超載人生 作者:蘭蒂‧祖克柏 書版社:遠流     蘭蒂‧祖克柏說,人生有五大面向,工作、睡眠、家庭、運動和朋友。 照顧自己的健康,包含身體及心理的適應力,好的情緒表達、專注、壓力管理以及有益健康的飲食,這些,蘭蒂都放在「運動」面向裡,這樣
Thumbnail
​ 走一趟新北市新莊區中正路,這一條有新莊廟街之稱街道。彷彿時間流盪走進清朝時光隧道內。如果說是新莊區最密集廟宇駐利街道,到不如說是先民遺跡之地。這一條廟街廟宇很多,古蹟也不少。這篇來介紹新北市定古蹟文昌祠。 新北市新莊區文昌祠相關資訊: ​​ ​​ 新北市新莊區碧江街20號 ​​ ​​ 0
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
塵封的日子裡 消逝了多少朝陽 只剩斑駁的殘陽 灑在凋零的屋簷 推開那道門,一具枯槁的身軀正安睡在破爛的床舖上。房間裡散發出一股髒亂和腐朽的氣息,宛如死亡的氛圍。望著那蒼老的面容,我們難以想像她經歷過的掙扎和絕望。 生的最後一點希望 就這麼黯淡無光 獨自倖離群竄 無
Thumbnail
前言 話說繼美光退出超頻記憶體馬甲散熱片條市場好一陣子以後,於今年八月份推出了Pro系列產品 而產品線就包含了隨插即用的記憶體模組以及高速的固態硬碟SSD搶攻專業級電腦主機裝機市場 前一陣子也入手過一組16GB x2 kit 來玩、玩過之後對它的效能跟方便的隨插即用讚不絕口...
Thumbnail
從零開始學習投資(一):最重要的是投資心態! 第一篇文章中提到在投資開始錢該怎麼建立好心態,那麼心理建設完了到底該怎麼入場,入場後在過程中要注意那些事情,以及要怎麼持續精進自己好讓自己在投資這條路上走的更長遠,會是本文的焦點,文中會附上經過篩選適合初學者的我自己閱讀過的書籍以及常用的網站,供各位參
如果真的要為易經找出一個哲學性定位,個人認為那或許是,比起分析世界,更在意於探討人與世界之間的關係與位置,這是深藏內部的涵義
Thumbnail
Mengrai建立之蘭納王國控制泰國清邁一帶,勢力一度達到中國西雙版納傣族自治州,與拓地西南的元朝因爭奪今景洪市交惡,遭元朝於1301年遣劉深率大軍征討被其稱為「八百媳婦國」的蘭納,但大軍所及,軍需徵調徭役導致雲南少數民族不滿,紛起聯合反抗,加上不適熱帶叢林,於1302年蒙古兵鋒未至蘭納便被迫撤軍。
Thumbnail
很多新人會問,一進的時候有爸爸牽手走紅毯跟花童灑花,那婚禮二次進場到底還能做些什麼呢?超怕冷場的啦~別擔心,OKOH來告訴你,不擔心冷場的幾種二進方式,快看過來吧
Thumbnail
父母要求,男女雙方分開辦,女方辦訂婚+歸寧,男方則是結婚。 婚宴場地由我爸媽決定,最後選擇台南商務會館,除了宴客,會館也提供同一場地的舞台給我們進行儀式,並準備奉茶等瑣事。 我們的媒人婆請專業媒人婆來,給予需求和時間後,由他來排行程
Thumbnail
移工讀四技二專進修部 機械人才夯、11技專校院擬開班 2022-06-16 聯合報/ 記者 許維寧 /台北即時報導 李尚懿說,學校初期只和單一一間廠商合作,譬如可對準廠商訓練需求安排至同一個班級、方便做安排,預計上述廠商的移工將安排就讀機械科二專進修部。 鈺鵬國際管理顧問有限公司 5.異業結盟。
Thumbnail
書名:選三哲學    聚焦3件事,解決工作生活兩難,搞定你的超載人生 作者:蘭蒂‧祖克柏 書版社:遠流     蘭蒂‧祖克柏說,人生有五大面向,工作、睡眠、家庭、運動和朋友。 照顧自己的健康,包含身體及心理的適應力,好的情緒表達、專注、壓力管理以及有益健康的飲食,這些,蘭蒂都放在「運動」面向裡,這樣
Thumbnail
​ 走一趟新北市新莊區中正路,這一條有新莊廟街之稱街道。彷彿時間流盪走進清朝時光隧道內。如果說是新莊區最密集廟宇駐利街道,到不如說是先民遺跡之地。這一條廟街廟宇很多,古蹟也不少。這篇來介紹新北市定古蹟文昌祠。 新北市新莊區文昌祠相關資訊: ​​ ​​ 新北市新莊區碧江街20號 ​​ ​​ 0