給定乙個二維平面及平面上的 n 個點列表points,其中第i個點的座標為points[i]=[xi,yi]。請找出一條直線,其通過的點的數目最多。設穿過最多點的直線所穿過的全部點編號從小到大排序的列表為s,你僅需返回[s[0],s[1]]作為答案,若有多條直線穿過了相同數量的點,則選擇s[0]值較小的直線返回,s[0]相同則選擇s[1]值較小的直線返回。
示例:輸入: [[0,0],[1,1],[1,0],[2,0]]
輸出: [0,2]
解釋: 所求直線穿過的3個點的編號為[0,2,3]
2 <= len(points) <= 300
len(points[i]) = 2
1.暴力,遍歷所有2個點可能組成的直線,再對每條直線得到最終的答案,乙個小技巧是如何解決相同點的問題,這裡我們維護乙個變數記錄下點的多少
2.乙個巧妙的方式,需要觀察到所有在一條直線上的點的k和b是一樣的
class solution:
def bestline(self, points: list[list[int]]) -> list[int]:
res=
c=0for i in range(len(points)):
for j in range(len(points)):
if i!=j:
cnt=0
t=for k in range(len(points)):
if (points[j][1]-points[i][1])*(points[k][0]-points[i][0])==(points[k][1]-points[i][1])*(points[j][0]-points[i][0]):
cnt+=1
if len(t)<2:
if cnt==c:
c=cnt
elif cnt>c:
c=cnt
res=[t]
res.sort()
return res[0]
class solution:
def bestline(self, points: list[list[int]]) -> list[int]:
d = {}
x = y = 0
maxcount = 0
for i in range(len(points)):
for j in range(i+1, len(points)):
k, b = self.f([points[i], points[j]])
if (k, b) in d.keys():
d[(k, b)][0] += 1
else:
d[(k, b)] = [1, (i, j)]
if d[(k, b)][0] > maxcount or (d[(k, b)][0] == maxcount and d[(k, b)][1][0] < x) or (d[(k, b)][0] == maxcount and d[(k, b)][1][0] == x and d[(k, b)][1][1] < y):
maxcount = d[(k, b)][0]
x, y = d[(k, b)][1]
#print(x, y)
return [x, y]
# 求兩點之間連線的斜率k和截距b
def f(self, points: list[list[int]]) -> list[int]:
if points[0][0] == points[1][0]:
return [float('inf'), points[0][0]]
else:
return [(points[1][1]-points[0][1]) / (points[1][0]-points[0][0]),
(points[0][1]*points[1][0]-points[1][1]*points[0][0]) / (points[1][0]-points[0][0])]
面試題 PHP面試題
建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...
面試題 騰訊2012面試題
問題描述 例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex qqnum n 得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n 1,那...
面試題總結 html面試題)
附上鏈結 doctype 的作用是什麼?宣告一般位於文件的第一行,它的作用主要是告訴瀏覽器以什麼樣的模式來解析文件。一般指定了之後會以標準模式來 進行文件解析,否則就以相容模式進行解析。在標準模式下,瀏覽器的解析規則都是按照最新的標準進行解析的。而在相容模式下,瀏 覽器會以向後相容的方式來模擬老式瀏...