付費限定

389. Find the Difference (找不同)

更新 發佈閱讀 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
留言分享你的想法!
avatar-img
LeetCode King
55會員
59內容數
我要成為 LeetCode 王!快跟我一起踏上旅程!
LeetCode King的其他內容
2024/03/21
魔鬼藏在二分搜尋裡!輸出值代表的意含、題意產生的邊界條件,寫完模板才是挑戰的開始 Orz
Thumbnail
2024/03/21
魔鬼藏在二分搜尋裡!輸出值代表的意含、題意產生的邊界條件,寫完模板才是挑戰的開始 Orz
Thumbnail
2024/01/22
給你一堆字母請你湊出單字,Scramble 貌似也是這樣玩的 (?
Thumbnail
2024/01/22
給你一堆字母請你湊出單字,Scramble 貌似也是這樣玩的 (?
Thumbnail
2023/12/19
成對的數字裡出現一個落單的邊緣人,我有六種方法找出它,你會幾種呢?
Thumbnail
2023/12/19
成對的數字裡出現一個落單的邊緣人,我有六種方法找出它,你會幾種呢?
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
那位同學背後的動物是? 看他如何聰明地解決這個事件!
Thumbnail
那位同學背後的動物是? 看他如何聰明地解決這個事件!
Thumbnail
我...… 被方格子官方發現了! 下一個會輪到大家嗎?🤪
Thumbnail
我...… 被方格子官方發現了! 下一個會輪到大家嗎?🤪
Thumbnail
忙碌的工作,是否也讓你迷失了自己!找個時間,去拜訪你的學長姊,也許他們就是一座指點迷津的燈塔喔!
Thumbnail
忙碌的工作,是否也讓你迷失了自己!找個時間,去拜訪你的學長姊,也許他們就是一座指點迷津的燈塔喔!
Thumbnail
人們傾向他們只願意記得的事情,我想這是他們不具「辨識度」的原因​。
Thumbnail
人們傾向他們只願意記得的事情,我想這是他們不具「辨識度」的原因​。
Thumbnail
在與陌生的招標機關互動時,瞭解如何找到關鍵人物至關重要。這篇文章探討了建立第一印象的技巧,包括瞭解客戶情緒、主動收集資訊及準備有意義的對話內容。藉此,讀者將學會如何在面談中創造印象深刻的交流,提升與客戶的關係。
Thumbnail
在與陌生的招標機關互動時,瞭解如何找到關鍵人物至關重要。這篇文章探討了建立第一印象的技巧,包括瞭解客戶情緒、主動收集資訊及準備有意義的對話內容。藉此,讀者將學會如何在面談中創造印象深刻的交流,提升與客戶的關係。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News