LeetCode 🟡 3128. Right Triangles
🔗 🟡 3128. Right Triangles 1541
tags: Biweekly Contest 129
陣列(Array)
雜湊表(Hash Table)
計數(Counting)
數學(Math)
組合數學(Combinatorics)
題意
給定一個二維 boolean
矩陣 。
如果 中 3 個元素滿足:一個元素與另一個元素在 同一橫列(row),同時與第三個元素在 同一直行(col) ,那麼這 3 個元素稱為一個 直角三角形 。這 3 個元素互相之間不需要相鄰。
返回使用 中的 3 個元素可以構建的 直角三角形 數目,且滿足 3 個元素值 都 為 。
思路:枚舉中間點 + 乘法原理
令 表示 中第 橫列(row) 中 的數量, 表示 中第 直行(col) 中 的數量。
則若 ,則以其作直角頂點的直角三角形數量為 ,因為除了中間點外,同一橫列和直行上都只能選擇 個頂點。
- 在同一橫列(row)中,可選擇的點數為 (排除自身)
- 在同一直行(col)中,可選擇的點數為 (排除自身)
- 根據乘法原理,全部的組合數為
故可以在計算完 和 後,枚舉所有頂點,計算其可能的組合數,最後將所有頂點的組合數相加即可。
複雜度分析
- 時間複雜度:,其中 和 分別是矩陣的橫列數和直行數。我們需要遍歷矩陣两次,第一次統計每行每列的 的數量,第二次計算每個可能的直角頂點能形成的三角形數量。
- 空間複雜度:,用於存儲 和 陣列。
1 | class Solution: |
1 | class Solution { |
寫在最後
masterpiece, best quality, high quality, extremely detailed CG unity 8k wallpaper, extremely detailed, High Detail, vibrant, colors, backlight, bright, soft lighting, dreamy atmosphere, orange tone, (1girl, solo), long hair, looking at viewer, gentle smile, bangs, black hair, brown eyes, standing, sleeveless, indoors, blunt bangs, bag, sleeveless dress, handbag, dress, (orange dress), in the library, library, bookshelves, warm light filtering through windows, cozy ambiance, soft shadows, detailed background, vintage decor, scattered books, wooden furniture