LeetCode 1128 等價多米諾骨牌對的數量 題解

今天的每日一題,我的思路還是硬做,不如評論區通過狀壓寫的簡單,但是答題思路加算法實現是沒有問題的,且時間復雜度也是可以通過的,畢竟全是o(n)
那么我就來說一下我的思路,根據dominoes[i] = [a, b]?與?dominoes[j] = [c, d]?等價?當且僅當 (a == c?且?b == d) 或者 (a == d?且?b == c)可以知道我們需要將上述兩種情況總和到一起,那我們就可以常規使用map進行維護,但不同于以往的兩個Integer維護,我們這次需要改成String+Integer的map進行維護,而String則是代表i和j(dominoes[i][0]dominoes[i][1]),而后面的Integer則代表數量,然后通過示例分析我們可以明白,如果前后存在3個、2個、1個可以這么統計的值的話我們可以使用公式sum*(sum-1)/2得到。那么最后相加,結果就出來了。如果有解釋不到位的地方,結合代碼應該能理解的更快。

class Solution {public int numEquivDominoPairs(int[][] dominoes) {int n = dominoes.length;HashMap<String,Integer> hashmap = new HashMap<>();for(int i=0;i<n;i++){String key = "("+ dominoes[i][0] + "," + dominoes[i][1] + ")";String keyR = "(" + dominoes[i][1] + "," + dominoes[i][0] + ")";if(hashmap.getOrDefault(key,0)>0){hashmap.put(key,hashmap.getOrDefault(key,0)+1);}else if(hashmap.getOrDefault(keyR,0)>0){hashmap.put(keyR,hashmap.getOrDefault(keyR,0)+1);}else{hashmap.put(key,hashmap.getOrDefault(key,0)+1);}}int sum = 0;for(Map.Entry<String,Integer> entry:hashmap.entrySet()){// System.out.println("key="+entry.getKey()+" value="+entry.getValue());int mid = entry.getValue()*(entry.getValue()-1)/2;sum+=mid;}return sum;}
}

之后我們再來看看別人代碼的實現,不僅要總結自己的思路,我們也要吸取別人的思路做題,說不定哪天就用上了。

class Solution {public int numEquivDominoPairs(int[][] dominoes) {int[] num = new int[100];int ret = 0;for (int[] domino : dominoes) {int val = domino[0] < domino[1] ? domino[0] * 10 + domino[1] : domino[1] * 10 + domino[0];ret += num[val];num[val]++;}return ret;}
}

我們拿個示例來說一下

輸入:dominoes = [[1,2],[1,2],[1,1],[1,2],[2,2]]
輸出:3

比如這個示例

我們官方題解開的數組是100,是為了將雙下標變為單下標然后統計數量,比如1,2和2,1都變為12,然后再根據通過加加統計,當到第三個[1,2]時,num[12]已經統計至0+1+2=3了并計入ret中,實在是秒啊。通過一次循環遍歷即遍歷完整題的要求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78507.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78507.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技術部測試規范

簡短測試流程&#xff1a; 開發完成 -> 本地自測 -> 測試環境自測 -> 通知測試同事復測 -> 確認無誤后上生產 -> 生產環境自測 -> 再次通知測試同事復測 -> 提交產品驗收。 當然可以&#xff01;以下是進一步優化后的測試流程規范&#xff0c;特別強調了開…

算法每日一題 | 入門-順序結構-大象喝水

大象喝水 題目描述 一只大象口渴了&#xff0c;要喝 20 升水才能解渴&#xff0c;但現在只有一個深 h 厘米&#xff0c;底面半徑為 r 厘米的小圓桶 &#xff08;h 和 r 都是整數&#xff09;。問大象至少要喝多少桶水才會解渴。 這里我們近似地取圓周率 π 3.14 \pi3.14 π…

Qt中實現工廠模式

在Qt中實現工廠模式可以通過多種方式&#xff0c;具體選擇取決于需求和場景。以下是幾種常見的實現方法&#xff1a; 1. 簡單工廠模式通過一個工廠類根據參數創建不同對象。cppclass Shape {public: virtual void draw() 0; virtual ~Shape() default;};class Circle : publ…

【前端】ES6一本通_劃重點_補充面試題

近兩天更新完基本內容&#xff0c;后續長期更新&#xff0c;建議關注收藏點贊。 ES6&#xff08;ECMAScript 2015&#xff09;是現代 JavaScript 的基礎&#xff0c;在前端面試中非常常見。 本文已匯總的本站筆記 ES6最重要10特性 對象新增 數組新增 異步、生成器 Promise 模塊…

初識 iOS 開發中的證書固定

引言 在移動應用安全領域&#xff0c;HTTPS/TLS 是數據傳輸的第一道防線&#xff0c;但僅依賴系統默認的證書驗證仍有被中間人&#xff08;MITM&#xff09;攻擊的風險。Certificate Pinning&#xff08;證書固定&#xff09;通過將客戶端信任“釘”在指定的服務器證書或公鑰上…

單片機的各個種類及其詳細介紹

一、按架構分類的深度解析 1. ARM Cortex-M系列 核心優勢&#xff1a; 統一架構&#xff1a;ARM生態完善&#xff0c;工具鏈&#xff08;Keil、IAR、GCC&#xff09;通用。 性能分層&#xff1a;M0&#xff08;低功耗&#xff09;、M3&#xff08;平衡&#xff09;、M4/M7&am…

5.7/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;Global, regional, and national burden and trends of rheumatoid arthritis among the elderly population: an analysis based on the 2021 Global Burden of Disease study DOI&#xff1a;10.3389/fimmu.2025.1547763 中文標題&#xff1a;全球、區域…

從微服務到AI服務:Nacos 3.0如何重構下一代動態治理體系?

在現代微服務架構的浪潮中&#xff0c;Nacos早已成為開發者手中的“瑞士軍刀”。作為阿里巴巴開源的核心中間件&#xff0c;它通過動態服務發現、統一配置管理和服務治理能力&#xff0c;為云原生應用提供了堅實的基石。從初創公司到全球500強企業&#xff0c;Nacos憑借其開箱即…

Unity與Unreal Engine(UE)的深度解析及高級用法

以下是Unity與Unreal Engine(UE)的深度解析及高級用法對比,結合技術特性、行業應用與未來發展進行綜合闡述: 一、核心差異與適用場景對比 1. 技術架構與編程模式 Unity 語言與腳本:主要使用C#,語法簡潔且易于學習,適合快速原型開發和中小型項目。支持可視化腳本工具(如…

李沐動手深度學習(pycharm中運行筆記)——05.線性代數

05.線性代數&#xff08;與課程對應&#xff09; 1、導入torch import torch2、 標量由只有一個元素的張量表示 x torch.tensor([3.0]) y torch.tensor([2.0]) print("x y:", x y, "\nx * y:", x * y, "\nx / y:", x / y, "\nx ** y…

Python3與Dubbo3.1通訊解決方案(dubbo-python)

【文章非VIP可讀&#xff0c;如果發現閱讀限制為系統自動修改閱讀權限&#xff0c;請留言我改回】 概述 最近AI項目需要java與python通訊&#xff0c;兩邊都是比較新的版本。因此需要雙方進行通訊&#xff0c;在這里記錄一下所采用的方案和關鍵點。 JAVA調用Python python通…

使用 DBeaver 將數據從 PostgreSQL 導出到 SQLite

使用 DBeaver 將數據從 PostgreSQL 導出到 SQLite&#xff0c;可按以下步驟進行&#xff1a; 1、連接到 PostgreSQL 數據庫&#xff1a;打開 DBeaver&#xff0c;點擊 “新建連接”&#xff0c;選擇 “PostgreSQL”&#xff0c;輸入數據庫的地址、端口、用戶名和密碼等信息&am…

介詞:連接名詞與句子其他成分的橋梁

文章目錄 1. with伴隨1.表示“跟人或物”的伴隨2.“行為”和“狀態”的伴隨2. of所屬關系1. 人或物的所屬關系2. 比較抽象的所屬關系3. in1. 在......中,在......范圍里2. 在某一段時間4. on1. 表示地點:在......上2. 表示時間:在某一天3. 關于某個主題5. at1. at + 具體時間…

FastApi快速實踐

文章目錄 一、主要功能&#xff1a;二、安裝 FastAPI 和 Uvicorn&#xff08;運行服務器&#xff09;三、示例代碼&#xff1a;四、運行服務器&#xff1a;1. 方式一&#xff1a;2. 方式二&#xff1a; 五、訪問接口六、如果需要跨域&#xff08;CORS&#xff09;七、總結 下面…

深度學習中保存最優模型的實踐與探索:以食物圖像分類為例

深度學習中保存最優模型的實踐與探索&#xff1a;以食物圖像分類為例 在深度學習的模型訓練過程中&#xff0c;訓練一個性能良好的模型往往需要耗費大量的時間和計算資源。而保存最優模型不僅可以避免重復訓練&#xff0c;還能方便后續使用和部署。本文將結合食物圖像分類的代…

護理崗位技能比賽主持稿串詞

男&#xff1a;尊敬的各位老師 女&#xff1a;親愛的各位同學 合&#xff1a;大家下午好。 男&#xff1a;在這鳥語花香&#xff0c;詩意盎然的季節里 女&#xff1a;在這陽光燦爛&#xff0c;激情似火的日子里 合&#xff1a;我們歡聚一堂&#xff0c;共同慶祝五一二國際護士節…

【翻譯、轉載】MCP 核心架構

核心架構 了解 MCP 如何連接客戶端、服務器和 LLM 模型上下文協議 (MCP) 構建在一個靈活、可擴展的架構之上&#xff0c;能夠實現 LLM 應用程序與集成之間的無縫通信。本文檔涵蓋了核心的架構組件和概念。 概述 MCP 遵循客戶端-服務器 (client-server) 架構&#xff0c;其中…

Python 數據智能實戰 (11):LLM如何解決模型可解釋性

寫在前面 —— 不只知其然,更要知其所以然:借助 LLM,揭開復雜模型決策的神秘面紗 在前面的篇章中,我們學習了如何利用 LLM 賦能用戶分群、購物籃分析、流失預測以及個性化內容生成。我們看到了 LLM 在理解數據、生成特征、提升模型效果和自動化內容方面的巨大潛力。 然而…

Linux:進程優先級及環境

一&#xff1a;孤兒進程 在Linux系統中&#xff0c;當一個進程創建了子進程后&#xff0c;如果父進程執行完畢或者提前退出而子進程還在運行&#xff0c;那么子進程就會成為孤兒進程。子進程就會被systemd&#xff08;系統&#xff09;進程收養&#xff0c;其pid為1 myproces…

Java大廠面試:Java技術棧中的核心知識點

Java技術棧中的核心知識點 第一輪提問&#xff1a;基礎概念與原理 技術總監&#xff1a;鄭薪苦&#xff0c;你對JVM內存模型了解多少&#xff1f;能簡單說說嗎&#xff1f;鄭薪苦&#xff1a;嗯……我記得JVM有堆、棧、方法區這些區域&#xff0c;堆是存放對象的地方&#xf…