數論技巧題 造出等長的新二進位字串Find Unique Binary String Leetcode #1980

閱讀時間約 4 分鐘
raw-image

這題的題目在這裡:Find Unique Binary String

題目敘述

題目會給我們一個字串陣列nums,內容都是二進位字串,要求我們造出一個另一個相等長度,新的二進位字串,而且不和字串陣列nums內的重複。

答案可能有不只一組,回傳合任一組合法的答案皆可。


測試範例

Example 1:

Input: nums = ["01","10"]
Output: "11"
Explanation: "11" does not appear in nums. "00" would also be correct.

Example 2:

Input: nums = ["00","01"]
Output: "11"
Explanation: "11" does not appear in nums. "10" would also be correct.

Example 3:

Input: nums = ["111","011","001"]
Output: "101"
Explanation: "101" does not appear in nums. "000", "010", "100", and "110" would also be correct.

約束條件

Constraints:

  • n == nums.length
  • 1 <= n <= 16
  • nums[i].length == n
  • nums[i] is either '0' or '1'.
  • All the strings of nums are unique.

演算法

其實這邊可以利用到在數論中,證明實數集合是不可數集,包含有無窮多的小數,可以無窮分割的康託對角線證明技巧。

把每個已知的二進位字串視為軸線,那麼要造出新的等長不重複二進位字串,依照康託對角線的原則,就變得很簡單。

舉例來說:

nums 給定 "111","011","001" 視為已知

那麼

1 1 1

0 1 1

0 0 1

排列好之後,把對角線的bit作翻轉(特別標黑粗體的部分),0翻轉成1,1翻轉成0,就可以造出另一個相等長度,新的二進位字串 "000"


再舉一個例子

nums 給定 "01","10" 視為已知

那麼

0 1

1 0

排列好之後,把對角線的bit作翻轉(特別標黑粗體的部分),0翻轉成1,1翻轉成0,就可以造出另一個相等長度,新的二進位字串 "11"


程式碼

class Solution:
 def findDifferentBinaryString(self, nums: List[str]) -> str:

  binary = []

  # Use the trick like Cantor's diagonal argument
  for i in range(len(nums)):

   if nums[i][i] == "0":
    binary.append("1")
   
   else:
    binary.append("0")

  return "".join(binary)

複雜度分析

時間複雜度: O(n)

一次線性掃描,掃描長度和字串長度一樣長。

空間複雜度: O(n)

過程中,會使用到暫存的buffer array: binary


關鍵知識點

除了傳統的暴力法展開,去一個一個比對,去除重複的二進位字串。

也可以使用康託對角線證明技巧。

把每個已知的二進位字串視為軸線,把原本的01互相翻轉,造出新的等長不重複二進位字串。


Reference:

[1] Python O(n) by Cantor's diagonal [w/ Visualization] - Find Unique Binary String - LeetCode

avatar-img
89會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目會給我們一個字串s,內容都是由英文小寫字母組成,要求我們計算長度為3的回文子序列有多少個? 舉例,aba者種形式的序列,就是長度為3的回文序列。
題目會給我們一個routes 陣列,裡面都是分別代表每一條公車路線所對應的公車站編號。 題目要求我們計算出,從起點站source到終點站target的最精簡公車路線搭乘次數是幾次? 也就是說,就是在最少轉乘的前提下,旅途中需要搭乘幾條公車路線?
題目會給我們一個pair陣列,裡面都是原本陣列相鄰元素形成的pair,順序已經被打散。 要求我們從pair陣列重建出原本的陣列。 答案可能有不只一組,任選一組回傳即可。
題目會給定我們一個字串s,要求我們計算出同質子字串有幾個? 同質子字串的定義就是子字串內部的字元都相同,例如a, aa, aaa, ... 等等這些就是同質子字串。
題目會給定我們兩個點座標,分別是起點和終點。 另外,還有一個參數t,代表時間限制。 從起點出發之後,每一秒鐘,我們必須選擇一個N8 8連通的方向,往鄰居的格子點移動。(題目有特別強調,每一秒必須強制移動到下一個格子點,不能停留在原地) 請問我們能不能在時間限制內,從起點走到終點?
題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 題目給我們一次做多的機會,也就是A交易日買進,B交易日賣出,請問最大獲利是多少?(此處不需要考慮現實面的交易稅、手續費...等因素) 如果無法獲利,則題目要求return 0。
題目會給我們一個字串s,內容都是由英文小寫字母組成,要求我們計算長度為3的回文子序列有多少個? 舉例,aba者種形式的序列,就是長度為3的回文序列。
題目會給我們一個routes 陣列,裡面都是分別代表每一條公車路線所對應的公車站編號。 題目要求我們計算出,從起點站source到終點站target的最精簡公車路線搭乘次數是幾次? 也就是說,就是在最少轉乘的前提下,旅途中需要搭乘幾條公車路線?
題目會給我們一個pair陣列,裡面都是原本陣列相鄰元素形成的pair,順序已經被打散。 要求我們從pair陣列重建出原本的陣列。 答案可能有不只一組,任選一組回傳即可。
題目會給定我們一個字串s,要求我們計算出同質子字串有幾個? 同質子字串的定義就是子字串內部的字元都相同,例如a, aa, aaa, ... 等等這些就是同質子字串。
題目會給定我們兩個點座標,分別是起點和終點。 另外,還有一個參數t,代表時間限制。 從起點出發之後,每一秒鐘,我們必須選擇一個N8 8連通的方向,往鄰居的格子點移動。(題目有特別強調,每一秒必須強制移動到下一個格子點,不能停留在原地) 請問我們能不能在時間限制內,從起點走到終點?
題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 題目給我們一次做多的機會,也就是A交易日買進,B交易日賣出,請問最大獲利是多少?(此處不需要考慮現實面的交易稅、手續費...等因素) 如果無法獲利,則題目要求return 0。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
大家好,上回的韓非篇是否讓你收穫滿滿呢?今天說話藝術課的儒家代表,是於戰國學術中心稷下學宮擔任祭酒(註),還教過辯論高手韓非、李斯的思想家——荀子!筆者將透過他的〈解蔽〉分析荀子的辯論技巧,帶領大家窺其堂奧!   Step 1: 「引」人入文——大佬的話就是香,「引用」是加乘說服力的幫手。
Thumbnail
韓非〈五蠹〉篇的議論技巧來到最終章, 今天要講述的是議論說服最核心的技巧。 Step 3  一針見血,不蔓不枝(註一)——找出議論成敗之關要,集中火力攻擊,才能強化說服力度。 議論說服最核心的技巧——圍繞主題以展開論點。趕快來看看吧!
Thumbnail
〈五蠹〉中運用的第二個技巧——「影響的極限化」,也可稱「後果的極限化」。或許,這個說話藝術是讓秦王贏政也被韓非打動的原因呢!當中到底藏著什麼神奇,讓我們看看吧!
Thumbnail
題目會給我們一個字串陣列nums,內容都是二進位字串,要求我們造出一個另一個相等長度,新的二進位字串,而且不和字串陣列nums內的重複。 答案可能有不只一組,回傳合任一組合法的答案皆可。
Thumbnail
作者:陳華夫 我的小說《黃色信封袋裡的派克金筆》(以下簡稱《黃》),陸續修改了三十年。試讀與發表後,不少讀者回饋,現在以本文綜合討論、答覆,以表感謝之意。 繁弦急管已響起,音樂的盛宴劃下了休止符。 小說作者談起自己的小說,總是喋喋不休個沒完。 就寫到這。
Thumbnail
「溝通」,是近年來備受關注的議題,今年甚至有一檔節目——「全明星辯論會」,節目組強調希望透過這個節目,讓大家學到「好好說話」這個課題。如何恰當地清晰地表達自己的思想、觀點;如何增強自己的論據以說服對方;如何運用舉例時事或譬喻讓自我觀點更淺顯易懂.......以上問題是現代人都需要好好思考、學習的。
Thumbnail
作者:陳華夫 《色,戒》雖然只有約1.4萬字,但「由性生愛」這個探觸女性尊嚴及道德底線的敏感主題的確太難寫,難度超過“又吃掉蛋糕,又留下蛋糕”,就連大師級的張愛玲都琢磨了30多年。 《色,戒》的意在言外敘事技巧是為了避免意圖外露的 為虎作倀。卻引起讀者普遍的誤讀,連超級粉絲水晶的解讀都令張愛玲「呲牙
Thumbnail
紫微斗數是一套具有悠久歷史的命理解析工具,近代研究紫微斗數的人越來越多,透過科學研究方法持續比對紫微斗數的解析技術的工程師和數理家也不在少數。 合參論法 就是這樣被研究出來的 合參論法的研究計畫起於2006年,透過大量比對上百個命盤和個案的生命故事比對中發現的新技術。
Thumbnail
如果你是學術研究人員,碩博士生,那你一定會需要利用Obsidian來管理你的學術論文閱讀! Obsidian可以幫助我們看到「研究問題」與「研究方法」更深層的關係。這種深層關係,是做出原創且具影響力研究的關鍵。 在我過去25個月使用Obsidian管理學術閱讀的過程中,我領悟了以下的3個重大訣竅:
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
大家好,上回的韓非篇是否讓你收穫滿滿呢?今天說話藝術課的儒家代表,是於戰國學術中心稷下學宮擔任祭酒(註),還教過辯論高手韓非、李斯的思想家——荀子!筆者將透過他的〈解蔽〉分析荀子的辯論技巧,帶領大家窺其堂奧!   Step 1: 「引」人入文——大佬的話就是香,「引用」是加乘說服力的幫手。
Thumbnail
韓非〈五蠹〉篇的議論技巧來到最終章, 今天要講述的是議論說服最核心的技巧。 Step 3  一針見血,不蔓不枝(註一)——找出議論成敗之關要,集中火力攻擊,才能強化說服力度。 議論說服最核心的技巧——圍繞主題以展開論點。趕快來看看吧!
Thumbnail
〈五蠹〉中運用的第二個技巧——「影響的極限化」,也可稱「後果的極限化」。或許,這個說話藝術是讓秦王贏政也被韓非打動的原因呢!當中到底藏著什麼神奇,讓我們看看吧!
Thumbnail
題目會給我們一個字串陣列nums,內容都是二進位字串,要求我們造出一個另一個相等長度,新的二進位字串,而且不和字串陣列nums內的重複。 答案可能有不只一組,回傳合任一組合法的答案皆可。
Thumbnail
作者:陳華夫 我的小說《黃色信封袋裡的派克金筆》(以下簡稱《黃》),陸續修改了三十年。試讀與發表後,不少讀者回饋,現在以本文綜合討論、答覆,以表感謝之意。 繁弦急管已響起,音樂的盛宴劃下了休止符。 小說作者談起自己的小說,總是喋喋不休個沒完。 就寫到這。
Thumbnail
「溝通」,是近年來備受關注的議題,今年甚至有一檔節目——「全明星辯論會」,節目組強調希望透過這個節目,讓大家學到「好好說話」這個課題。如何恰當地清晰地表達自己的思想、觀點;如何增強自己的論據以說服對方;如何運用舉例時事或譬喻讓自我觀點更淺顯易懂.......以上問題是現代人都需要好好思考、學習的。
Thumbnail
作者:陳華夫 《色,戒》雖然只有約1.4萬字,但「由性生愛」這個探觸女性尊嚴及道德底線的敏感主題的確太難寫,難度超過“又吃掉蛋糕,又留下蛋糕”,就連大師級的張愛玲都琢磨了30多年。 《色,戒》的意在言外敘事技巧是為了避免意圖外露的 為虎作倀。卻引起讀者普遍的誤讀,連超級粉絲水晶的解讀都令張愛玲「呲牙
Thumbnail
紫微斗數是一套具有悠久歷史的命理解析工具,近代研究紫微斗數的人越來越多,透過科學研究方法持續比對紫微斗數的解析技術的工程師和數理家也不在少數。 合參論法 就是這樣被研究出來的 合參論法的研究計畫起於2006年,透過大量比對上百個命盤和個案的生命故事比對中發現的新技術。
Thumbnail
如果你是學術研究人員,碩博士生,那你一定會需要利用Obsidian來管理你的學術論文閱讀! Obsidian可以幫助我們看到「研究問題」與「研究方法」更深層的關係。這種深層關係,是做出原創且具影響力研究的關鍵。 在我過去25個月使用Obsidian管理學術閱讀的過程中,我領悟了以下的3個重大訣竅: