題目
description
現在輸入n個平面座標系上點,每個點均是過原點的直線(形如y=kx,k為int型,0input
首先輸入的是點的數量n,接下來是n行資料,每行都是乙個點的座標。
output
輸出一條經過最多點的直線上的點的數量m(int)。
sample input 1
91 1
2 21 50
4 43 6
5 52 90
3 99
3 9sample output 1
4分析
第一次更新
這次所貼**還沒有過oj系統,始終有乙個wrong answer,筆者還沒有查明具體的原因,但是基本的思路還是確定無誤,因此先貼上來方便查驗交流所用。
首先宣告,這並不是乙個好的完整的雜湊表,然而筆者向來主張具體的場景應用具體的資料結構和相關的操作集,面對這樣乙個簡單的問題,我們顯然不需要乙個完善的雜湊表。
這裡只說下核心思想:
雜湊表的主題是乙個列表,表裡的每個元素為乙個長度為2的小列表,分別放key和value,初始化時key為none,value為0,這裡的key就是咱們的斜率,value每次被尋到就加個1,用來計數。index用key%size來找,如果位置被佔了就直接往後找(線性探測法)。
第二次更新
第一次更新的問題找到了
修改如下
self._table[index][0] = key
self._table[index][1] += 1
改為self._table[index] = [key, self._table[index][1] + 1]
可能有些同學會像我一樣一頭霧水,這兩句看起來不是一樣嗎
現在讓我們看一下他們有什麼區別
或者用字典 當然不符合題目要求 只是單純解決這個問題,我們可以這麼做
n =
int(
input()
)hash_table =
for i in
range
(n):
temp_list =
input()
.split(
" ")
slope =
int(temp_list[1]
)//int(temp_list[0]
)if slope in hash_table:
hash_table[slope]+=1
else
: hash_table[slope]=1
value = hash_table.values(
)print
(max
(value)
)
求一條直線上能包含的最多數量的點
題目大意 給n個二維點的座標,求在所有點的連線中一條直線所能包含最多的點的個數 2000ms,1000的複雜度剛開始自己想了個n 3複雜度的方法,即使加上了感覺很有效的剪枝,但是依然tle了。看了網上某acmer的部落格,恍然大悟,原來n 2logn就可以過了 大致思路 列舉每乙個點 計算其他所有點...
二維平面上最多有多少個點在同一條直線上
思路一 兩點確立一條直線,判斷其餘的點是否在直線上 時間複雜度o n 3 submission result time limit exceeded int maxpoints vector points return max 思路二 記下任意兩點的斜率 不要是整形,float或double 找出最...
收到最多的同一條簡訊
我收到最多的一條簡訊內容如下 新年快樂 此簡訊雖有短短的四個字,卻深刻表達了我的祝福與情感,可謂言簡意賅,短小精幹,再加上以感嘆號收尾,意境深遠,有渾然天成之感,實乃簡訊之極品。並且 幾點說明 1 有的略有修改,比如四個字變成六個字 新年快樂 後面加上簽名 2 大多數簡訊內容都有截斷 3 有的人連別...