火車票區間演算法 設計
拋磚引玉, 考慮不周到的地方請大家提意見,在zhihu上也提問了 問題描述這樣, 一列火車有m個座位,n個區間段,現在有x個人上車,x< m*n, 當第i (a-b)個人上車時,必須能夠找到一個最優的座位(儘量利用已售過區間的座位,讓車票售出量最多) ,寫出查詢速度,訂票速度(包括取消票) 題中可知 m >> n
站點通過查詢將其轉化為一個自然數序列,方便計算 演算法1 現在看來效率比較低 我開始是這樣設計,仿照記憶體分配演算法, 暫且不考慮位元組優化 emptyRange{ short number short size nextRange } 每個座位是個SkipList
查詢 火車票是否有座就遍歷連結串列 找到 node.number <= a && node.number+size >=b 就認為有座
訂票 這個要求最優解 ,找產生碎片最小的情況,也就是說 size - (b-a) 是最小的,然後修改該空白node,如果分成兩個區間就增加一個node
取消 找到對應節點,把該空白區域加入到列表裡,需要合併的合併
匆匆想的,有些細節還沒考慮清楚,我是想大家一起討論下, 看看有沒有更好的演算法
Btw, 從關聯式資料庫 -> NoSql ->? 下一個是什麼呢?我想有沒有可能是自定義資料結構伺服器呢? Redis算是一個資料結構伺服器,目前不太清楚設計好一種演算法後,是否很容易整合進去。或者將來是否有一種開放的資料結構伺服器?資料結構伺服器上的資料者定期儲存或者同步到資料庫中。
剛才查了下 最多停靠站的火車是62個,車廂最長20節左右,客車座位數一節我們可以照200算(無坐也算) 一個座位最壞情況下 是n/2長連結串列,所有座位都是這樣,嗯,總共一列車最壞可以用到20*200* (2+2+4) * (62/2 * 1.33)大概是 1289600 1.2M個位元組 8G可用記憶體 可以儲存 8*1024*1024*1024/1289600 = 6661輛 沒有查到客列總數,想來不會超過一萬輛 照10000算 12天 20臺電腦也夠了
演算法 2 受無鋒之刃 演算法1 啟發
為所有區段生成一個二維陣列,排序如下
A B C D
B C D
C D
D
每個節點儲存該區間車票數量和車票
查詢 找到起始站點,再到其中找終點,從該點向下的節點都是有票得,然後再到起始站點-1 向下找 總共時間複雜度為O(i)
訂票 同查詢,找到該區段,如果沒有,就找終點+1, 然後,起點-1, 終點+2,交錯找下去,找到第一張票,複雜度O(i*(n-i)),找到之後將該區間分解,除去訂票區間,然後將剩餘的掛到相應的站點下
取消 遍歷,找以該票起始點為終點的空白段,和以該票終點為起始點的空白段,如果找到就合併,找不到就直接加入到以該票起始和終點統計的區段 還沒想好,如果遍歷需要花O(m)
相關文章
- 車票100–火車票介面開發文件
- 火車票軟體分享
- Python火車票程式碼薦Python
- 火車發車時間api 火車相關內容查詢API
- 注意!12306網站和APP買火車票時間提前網站APP
- 多執行緒賣火車票簡單例子執行緒單例
- 別人付費刷票,我用Python自動搶火車票Python
- 建設一個靠譜的火車票網上訂購系統
- 張掖到蘭州火車時刻表-張掖到蘭州火車票價查詢
- 蘭州到張掖火車時刻表-蘭州到張掖火車票價查詢
- Python3實現搶火車票功能(下)Python
- Python3.6實現12306火車票自動搶票Python
- 12306火車票訂票系統的伸縮擴充套件套件
- PostgreSQL與12306搶火車票的思考SQL
- 火車售票軟體系統的設計方案
- 全國新版列車執行圖今天啟用!春運火車票能“撿漏”
- 談談搶火車票的技術、技巧,以及暗藏其中的套路
- 12306火車票搶票Python程式碼最新完整版釋出,五一搶票就靠它了!Python
- 實驗2-2-9 計算火車執行時間 (15分)
- 乾貨 | 資料為王,攜程國際火車票的 ShardingSphere 之路
- 搶火車票這個事吧,其實我也能做!(python黑科技)Python
- Java語言多執行緒實現一個火車站賣票系統Java執行緒
- Java+SpringBoot+vue+element實現火車訂票平臺管理系統JavaSpring BootVue
- 搶票軟體幾分鐘圈走整列車車票 開發者被捕
- 深夜腦洞,寫了一個可以推算火車票身份證號碼的小程式
- 票據系統設計
- 多車軌道路徑規劃演算法設計演算法
- 演算法:區間樹演算法
- JavaScript 演算法:計算最大連續日期區間JavaScript演算法
- 火車站殺人事件事件
- 教你用Python動重新整理搶12306火車票,附原始碼!Python原始碼
- 【設計模式】第十二篇:車票購買場景中的代理模式講解設計模式
- 程式設計師在火車站寫程式碼,大媽直忙叫保安:黑客程式設計師黑客
- 列車車次查詢-餘票查詢-Api介面API
- 中國鐵路總公司:2017年春運火車票手機APP佔總售票的49.4%APP
- 忘記12306!用 Python3 實現自己的火車票檢視器!Python
- TrustData:2015年中國移動網際網路春運火車票搶購分析Rust
- 從 Kafka 看時間輪演算法設計Kafka演算法