付費限定

389. Find the Difference (找不同)

更新於 2024/10/01閱讀時間約 3 分鐘


英文版點我中文版點我


↑看個小廣告,支持好內容↑


我們這樣來讀題目:今天班級裡突然闖進一個陌生人,你拿著兩張相片,分別代表正常和「混入陌生人」的狀況,該如何在最快時間內抓出他呢?

威利在哪裡!我們就從有多一個人的照片著手,每看到人就去另一張照片檢查他有沒有出現。這樣確實能找出混進來的人,可是每個人都要重找一次照片,這太花時間了,有沒有比 O(n^2) 更好的做法?


❶ Sorting

老師於是叫大家照座號排成一列,看看會發生什麼:

s="dabe" -> 排列得到 "abde"
t="beacd" -> 排列得到 "abcde"


前兩項都相同,但由於第三項混入了 c,導致往後的項次都沒對上。從中可發現長字串裡,排序後第一個匹配不到的字母,必然是多出來的那個!

最起碼這避免了土法煉鋼,但排列仍需 O(nlogn),通常不會是最佳解。


❷ Hash Table (索引、桶子)

一般為了避免重找,直觀方式就是做個索引表,把看過的資料記錄下來。這通常也是大家的直覺做法:

1. 對 s 出現之字母累加正數
: map["a"]=1, map["n"]=2 代表字母 a,n 出現 1,2

2. 將 t 出現的字母逐一扣除,會出現以下狀況:
1) 索引 key 不存在:代表該字母在 s 未出現過
2) 扣​完出現負數:代表該字母在 t 出現次數比 s 多


兩種狀況都表示有找到多餘的字母!這個解法只要遍歷 s,t 字串各一次,複雜度因而降至線性 O(n)


話說回來,英文字母也才 26 種,開個長度 26 的陣列 (我習慣稱它桶子) 來計數也可以吧?實際上「桶子」和索引是很類似的概念,差別在於索引並不預知總共的類別 (key) 數量,桶子則一開始就定義 26 類並都填上了初始值 0。


❸ Sum

索引很安全穩固,但這題還有其他可愛的方法,記得上篇教過的 ASCII 嗎?假設

  • T = Σ (t 所有字母的 ASCII 值)
  • S = Σ (s 所有字母的 ASCII 值)

最後再反查 T-S 代表哪個字母,一樣可用 O(n) 優雅得出所求。


❹ XOR

位運算的掌握,很有可能替面試畫上點睛之筆!

raw-image

有沒有找到規律?當 x,y 相同時運算結果即為 0,換言之,它能將重複出現的元素成對抵銷,留下落單也就是混入的字母:

// s="dabe", t="beacd"

(d XOR a XOR b​ XOR e) XOR (b XOR e XOR a XOR c XOR d)
= (d XOR d) XOR (a XOR a) XOR (b XOR b) XOR (e XOR e) XOR c
= 0 XOR 0 XOR 0 XOR 0 XOR c
= c



篇幅不長也易懂的題目,解法居然出奇多種,試著動手一一實作它們,這是一道蘊含許多演算精華的超值經典:)


  • 本題分類標籤:Hash TableStringBit ManipulationSorting
  • 本題正解率=60.4%

❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 4 篇刷題筆記,完整解題索引看這裡 → Here

以行動支持創作者!付費即可解鎖
本篇內容共 1349 字、0 則留言,僅發佈於哩哩叩叩平安符:LeetCode 刷題筆記你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
54會員
59內容數
我要成為 LeetCode 王!快跟我一起踏上旅程!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
LeetCode King 的其他內容
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
環狀的公車路線圖,題目讀懂後會發現是個腦筋急轉彎!XD
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
環狀的公車路線圖,題目讀懂後會發現是個腦筋急轉彎!XD
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Discover how to find jobs in Taiwan with our complete guide. Explore visa options, top job platforms, and tips for foreign job seekers.
致豐工業電子集團收入截至2024年6月30日止六個月為 3.89億港元 持續邁向「大亞洲新能源業務圈」發展 [香港 - 2024年 8月 28日] 致豐工業電子集團有限公司(「致豐集團」或「集團」,股份代號:1710)為香港領先的工業電子零件及產品製造及銷售企業。集團欣然宣布本公司及其子公司
Thumbnail
『 Find me a Mr. Right. 』 『 給我找個真命天子。』 句子的 find 為雙賓動詞,後面會有兩個受詞,直接受詞與間接受詞,兩者用to或for連接。 
Thumbnail
我也不知道, 像走在沙漠裡分辦不了那方向的駱駝。
Thumbnail
題目會給定一個陣列,長度為n,裡面的數字都是獨一無二,落在0~n的範圍。 要求我們找出那個不見的數字 Missing Number 註: (n+1)個數字,無法同時放入n個不同的格子,必定有一個數字不見了。
Thumbnail
題目給定兩個字串s和t,t是s隨機打散後的字串,並且在t裡面額外多加了一個字元, 要求我們找出額外多加入的那個字元。
Thumbnail
2023/08/11 頂著艷陽,想到下午又會是雷陣雨大家不僅加快了腳步,全溜纜作業起來又更花時間,幸好趕在大雨前完工。 陳情的住戶還是表示不滿意,他覺得樹還是太高了,倒下了會壓到他們家。跟他解釋了風險部分,但他還是希望可以把樹降到比房子矮或是移除比較好。 確實,把樹移除的確是100%不會有樹倒
Recently I realized that inner peace is very important for my life and well-being. In the modern fast-paced life, we are often surrounded by vario
I began to reflect on my life and think about how to find the good in life. Sometimes, we often get caught up in the busyness and stress of our da
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Discover how to find jobs in Taiwan with our complete guide. Explore visa options, top job platforms, and tips for foreign job seekers.
致豐工業電子集團收入截至2024年6月30日止六個月為 3.89億港元 持續邁向「大亞洲新能源業務圈」發展 [香港 - 2024年 8月 28日] 致豐工業電子集團有限公司(「致豐集團」或「集團」,股份代號:1710)為香港領先的工業電子零件及產品製造及銷售企業。集團欣然宣布本公司及其子公司
Thumbnail
『 Find me a Mr. Right. 』 『 給我找個真命天子。』 句子的 find 為雙賓動詞,後面會有兩個受詞,直接受詞與間接受詞,兩者用to或for連接。 
Thumbnail
我也不知道, 像走在沙漠裡分辦不了那方向的駱駝。
Thumbnail
題目會給定一個陣列,長度為n,裡面的數字都是獨一無二,落在0~n的範圍。 要求我們找出那個不見的數字 Missing Number 註: (n+1)個數字,無法同時放入n個不同的格子,必定有一個數字不見了。
Thumbnail
題目給定兩個字串s和t,t是s隨機打散後的字串,並且在t裡面額外多加了一個字元, 要求我們找出額外多加入的那個字元。
Thumbnail
2023/08/11 頂著艷陽,想到下午又會是雷陣雨大家不僅加快了腳步,全溜纜作業起來又更花時間,幸好趕在大雨前完工。 陳情的住戶還是表示不滿意,他覺得樹還是太高了,倒下了會壓到他們家。跟他解釋了風險部分,但他還是希望可以把樹降到比房子矮或是移除比較好。 確實,把樹移除的確是100%不會有樹倒
Recently I realized that inner peace is very important for my life and well-being. In the modern fast-paced life, we are often surrounded by vario
I began to reflect on my life and think about how to find the good in life. Sometimes, we often get caught up in the busyness and stress of our da