Re: [閒聊] 每日LeetCode

看板Marginalman作者 (動物園 公告)時間2年前 (2023/11/16 11:51), 2年前編輯推噓5(501)
留言6則, 6人參與, 2年前最新討論串518/719 (看更多)
1980. Find Unique Binary String 給你一個字串陣列 裡面全都是長度為n的二進制數字字串 陣列長度也為n 回傳任何一個不在陣列中出現的二進制數字字串 Input: nums = ["01","10"] Output: "11" ("00"也可) Input: nums = ["00","01"] Output: "11" ("10"也可) Input: nums = ["111","011","001"] Output: "101" ("000", "010", "100", "110"也可) Intuition: 把Array改成Set之後找有沒有重複元素 沒有就交答案 TS Code: function findDifferentBinaryString (nums: string[]): string { const set = new Set(nums) for (let i = 0; i < Math.pow(2, nums.length); i++) { const value = i.toString(2).padStart(nums.length, "0") if (!set.has(value)) return value } } 本來想說這樣就結束了 後來看別人解答之後 發現別人用一個超猛的解法:對角論證法 對角論證法原本是拿來證明實數沒有上限用的 證明方法wiki有寫 有興趣的可以自己去找 而這個方法剛好也可以拿來解這一題 我們把陣列直的排起來 "111" "011" "001" 然後第n個字串就取第n個字元 "111" "011" "001" 取出來的字元是"111" 接下來全部反轉 1變0 0變1 -> "000" 反轉後的字元"000"有下列特性: 第一個字元一定跟陣列第一個相異 第二個字元一定跟陣列第二個相異 ... 第n個字元一定跟陣列第n個相異 所以反轉後的字串一定會跟陣列中的每個元素都相異 就是答案 -- Zoosewu Yoututbe顯示PTT推文 可以在各個網站追實況或Live時使用 預覽圖: https://i.imgur.com/ZhtXdAJ.png
https://i.imgur.com/WqbLNV3.png
完整介紹: https://github.com/zoosewu/PTTChatOnYoutube/tree/master/homepage 支援的網站: Youtube Twitch Holotools Niji-mado Holodex -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.229.33 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1700106677.A.9DB.html ※ 編輯: ZooseWu (114.32.229.33 臺灣), 11/16/2023 11:52:19

11/16 11:54, 2年前 , 1F
哇喔好天才的做法
11/16 11:54, 1F

11/16 11:57, 2年前 , 2F
大師
11/16 11:57, 2F

11/16 11:59, 2年前 , 3F
大師
11/16 11:59, 3F

11/16 12:12, 2年前 , 4F
大師
11/16 12:12, 4F

11/16 12:23, 2年前 , 5F
哇幹 好屌
11/16 12:23, 5F

11/16 12:57, 2年前 , 6F
大師
11/16 12:57, 6F
文章代碼(AID): #1bLP6rdR (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bLP6rdR (Marginalman)