程序员面试金典 - 面试题 16.14. 最佳直线(哈希map+set)
生活随笔
收集整理的這篇文章主要介紹了
程序员面试金典 - 面试题 16.14. 最佳直线(哈希map+set)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
給定一個(gè)二維平面及平面上的 N 個(gè)點(diǎn)列表Points,其中第i個(gè)點(diǎn)的坐標(biāo)為Points[i]=[Xi,Yi]。
請(qǐng)找出一條直線,其通過的點(diǎn)的數(shù)目最多。
設(shè)穿過最多點(diǎn)的直線所穿過的全部點(diǎn)編號(hào)從小到大排序的列表為S,你僅需返回[S[0],S[1]]作為答案
若有多條直線穿過了相同數(shù)量的點(diǎn),則選擇S[0]值較小的直線返回,S[0]相同則選擇S[1]值較小的直線返回。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/best-line-lcci
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
- 暴力法,固定一個(gè)點(diǎn),遍歷所有剩余的
- 采用嵌套的哈希map,第一層key存儲(chǔ)斜率,第二層key存儲(chǔ)截距,value為點(diǎn)的set集合(存儲(chǔ)下標(biāo))
- 斜率不存在,單獨(dú)再開一個(gè)哈希表,key為與 x 軸的截距,value為點(diǎn)集合
- 遍歷所有集合找最多的
- 對(duì)相等長(zhǎng)度的點(diǎn)集合排序,取出題目要求的最小的下標(biāo)的
- 時(shí)間復(fù)雜度 O(n2)O(n^2)O(n2)
660 ms 117.7 MB
總結(jié)
以上是生活随笔為你收集整理的程序员面试金典 - 面试题 16.14. 最佳直线(哈希map+set)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 842. 将数组拆分成
- 下一篇: LeetCode 540. 有序数组中的