螞蟻螞蟻;及周長最長分析
今日面試題:螞蟻螞蟻
n只螞蟻以每秒1cm的速度在長為Lcm的竿子上爬行。螞蟻爬到終點會掉下來。兩隻螞蟻相遇時,只能調頭爬回去。對於每一隻螞蟻i,給定其距離竿子左端的距離x[i],但是我們不知道螞蟻的初始朝向。計算,所有螞蟻掉落需要的最短時間和最長時間。
==========================================
周長最長分析
原題
n根長度不一的棍子,判斷是否有三根棍子可以構成三角形,並且找到周長最長的三角形。
分析
首先能夠構成三角形的三根棍子需要滿足什麼條件呢?這個簡直就是常識了:
最長棍子的長度 < 另外兩根棍子的長度和
這是重要條件。
那麼接下來該怎麼辦呢?暴力法——不要總覺得這是恥辱,要這樣想:這是一個好開端。三條邊,三層迴圈。時間複雜度為O(n^3)。這在一般的題目中,都是無法接受的。如何改進的呢?棍子有長有短,我們要找到的是周長最長的。
我們可以對棍子的長度,從大到小排序。從最長的開始找符合構成三角形條件的。找到的第一個就是周長最長的。
下面我們來說明,為什麼第一個找到的,就是最長的。假設我們有如下長度的棍子,並且長度一次遞減。
a | b | c | d | e | f | g |
假設opq是第一個可以構成三角形的棍子,假設還存在xyz,構成三角形,且,x+y+z > o + p + q, 因為opq是第一個三角形,則x<=o。則y+z > p+q,任取y、z,則可以找到,o,y,z為一個三角形,周長大於opq,並且,這個三角形,在opq之前找到(因為y或者z,大於p或者q,先遍歷到)。這個與adf是第一個的假設是矛盾的。所以,不存在xyz構成三角形,周長大於adf。
那麼如果找到第一個能夠構成三角形的三根棍子呢?現在棍子的長度已經是排序的。
a | b | c | d | e | f | g |
很明顯,我們只需要依次考慮,相鄰三個元素是否能夠構成三角形即可。因為,如果acd構成三角形,abc一定是,而且,周長還要更長。所以這裡O(n),就可以找到周長最長的三角形。前面排序是O(nlogn)。則,總的時間複雜度是O(nlogn).
【分析完畢】
本文來自微信:待字閨中,2013-08-12釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 2024.08.28螞蟻
- 螞蟻金服楊軍:螞蟻資料分析平臺的演進及資料分析方法的應用
- 3.30螞蟻筆試筆試
- 螞蟻研究報告
- 螞蟻金服RPC框架結構分析RPC框架
- 藍橋杯-螞蟻感冒
- 互金落,螞蟻起
- 螞蟻金融科技守護金融安全,螞蟻風險大腦助陣
- 螞蟻轉崗面試之路面試
- 螞蟻集團洪春濤 螞蟻高效能圖資料庫TuGraph-DB技術思考及實踐資料庫
- 螞蟻集團:截止2023年螞蟻集團全球專利申請超3.2萬件
- 螞蟻上市前,取消了週報
- 螞蟻科技上市前的轉身
- 我的 2020 總結,我在螞蟻成長的這一年
- 如何在微信小程式上開發一個「螞蟻森林」和「螞蟻莊園」結合體?微信小程式
- 螞蟻金服研究員玉伯回顧阿里十一年成長之路阿里
- 螞蟻金服 Service Mesh 深度實踐
- 入職阿里螞蟻三個月有感阿里
- 9.9螞蟻金服二三輪面試面試
- [招聘] AFX · 螞蟻體驗技術部
- 螞蟻金服 Service Mesh 實踐探索
- (螞蟻金服mPaaS)統一儲存
- 螞蟻部落Git教程簡單介紹Git
- 螞蟻集團上市招股書及簡要資料
- [如何在微信小程式上開發一個「螞蟻森林」和「螞蟻莊園」結合體?](轉)微信小程式
- 招聘貼:螞蟻金服招Java研發及前端開發Java前端
- 螞蟻集團:商業模式及競爭壁壘的深度分析(附下載)模式
- 螞蟻ANTMINER S21用芯製造
- leanote螞蟻雲筆記arm_server搭建筆記Server
- 螞蟻 RPC 框架 SOFA-RPC 初體驗RPC框架
- 招聘貼:螞蟻金服招Java研發Java
- 招聘貼:螞蟻金服招前端開發前端
- 【北京】Golang技術專家--螞蟻金服Golang
- 螞蟻金服-支付寶 招聘Golang工程師 月薪20K-35K 長期有效Golang工程師
- 螞蟻智慧內容合規稽核產品探秘
- 螞蟻SOFA系列(1) - 聊聊SOFA的模組化
- 螞蟻、位元組、滴滴面試經歷總結面試
- 螞蟻金服 DB Mesh 的探索與實踐
- 解構螞蟻金服:巨擘崛起(附下載)