最新版本;及加油站分析
今日面試題:最新版本
給定軟體的版本號的表示方式,以及一些版本號,請找出最新的版本。例如:
1. 1.2,2.2 最新的是2.2
2. 3.1, 3.1.3 最新的是3.1.3
上面的版本號,都是用字串表示的。
=================================================
加油站分析
原題
城市的環形路有n個加油站,第i個加油站的油量用gas[i]來表示,你有如下的一輛車:
1. 它的油缸是無限量的,初始是空的
2. 它從第i個加油站到第i+1個加油站消耗油量為cost[i]
現在你可以從任意加油站開始,路過加油站可以不斷的加油,問是否能夠走完環形路。如果可以返回開始加油站的編號,如果不可以返回-1。注意,解決方案保證是唯一的。
分析這個題目其實比較簡單,只要充分的理解,我相信大家都能夠解決的。你的這輛車的油缸是無限量的,所以每個加油站的油都可以加到車裡,但是關鍵是你得 保證,你在第i站的時候,油缸中有的油量,可以支撐你到第i+1站,對於每一站都要如此,所以,並不是總的油量大於消耗量就可以了。要保證每一站都有足夠 的油可以走到下一站,到每一站,你的車的油量都大於等於0就可以了。
經過上面的分析,很顯然,暴力一點,我們每個站都試一下唄,然後找到每一站的油量都大於等於0的那個走法,返回開始的加油站;沒有就返回-1。這個解法是O(n^2)的時間複雜度。
我們通過觀察上面的暴力方法的步驟,可以發現有很大的改進空間。當我們從第0個加油站開始,判斷是否可以走完,然後從第1個加油站開始,進行判斷的 時候,其實中間的計算已經做過了。反過來,我們如果計算好了從第1個加油開始,到某一個站時,油量為tank,此時考慮從第0個開始時,到該加油站的油量 就是gas[i]-cost[i] + tank。這時隱約覺得,解決方案的時間複雜度可以是O(n)的時間複雜度。 事實上確實可以,具體的方法如下:tank表示當前車的油缸裡的油量
1. 從第0個站開始,tank += gas[0] - cost[0],只要tank>=0,我們就繼續到下一個加油站
2. 當不滿足tank>=0,順著環路試驗從前一個站開始,比如,n-1: tank += gas[n-1] - cost[n-1],如果還小於0,繼續試驗再前一個。
3. 直到滿足 tank>=0,再進行第1步,依次類推
4. 當一前一後這兩個相遇了,演算法也就結束了,tank>=0,就成功,返回相遇的位置;否則,失敗,返回-1
上面這個方法的時間複雜度是多少呢?O(n)的,很簡單,我們作為一個整體來看,每一個節點都只走了一次。
【分析完畢】
本文來自微信:待字閨中,2013-10-10釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 最大乘積;及最新版本分析
- 加油站;及拷貝連結串列分析
- Android Sdk版本、Support包版本及常用框架最新版本彙總Android框架
- 加油站監控ai智慧分析AI
- 加油站智慧影片分析解決方案
- 智慧加油站AI智慧影片分析系統AI
- 在ubuntu上安裝最新穩定版本的node及npmUbuntuNPM
- 加油站ai視覺分析預警系統AI視覺
- 加油站AI智慧影片監控分析系統AI
- 智慧加油站卸油作業行為分析系統
- oracle加油站Oracle
- 國外資訊通訊立法和政策最新趨勢及分析
- 升級支援 requests 庫更新:相容最新 urllib3 版本及相關庫
- 中國機器人最新統計資料釋出及分析(附圖)機器人
- 最新2.7版本丨DataPipeline資料融合產品最新版本釋出API
- Elasticsearch7.6.2(目前最新版本)叢集搭建及Head外掛——最詳細安裝及配置Elasticsearch
- Ewebeditor最新漏洞及漏洞大全Web
- LeetCode 加油站LeetCode
- YOYOW最新版本“繁星”釋出
- Java最新發布版本有哪些變化?Java
- CocoaPods最新版本升級
- OpenStack釋出最新版本Ocata
- [譯]flutter_bloc 最新版本 0.19.0 的最新功能FlutterBloC
- AI晶片最新格局分析AI晶片
- 最新 HTML BroadcastChannel API 分析HTMLASTAPI
- springboot最新穩定版本、springcloud對應版本的選擇Spring BootGCCloud
- MacOs 升級 Git 到最新版本MacGit
- npm node升級到最新版本NPM
- oracle 11g最新的版本號是多少?Oracle
- JSDM框架最新版本介紹JS框架
- WebMisSharp更新了,最新版本1.5.2,WebMisCentral-Client最新版Webclient
- Ubuntu 安裝最新版本 Node.jsUbuntuNode.js
- MacOS X APK 最新版本 反編譯MacAPK編譯
- debian系統安裝最新lnmp編譯最新php7.1.2及nginx1.10.3及mysql5.7及5.6LNMP編譯PHPNginxMySql
- [Leetcode]134.加油站LeetCode
- LeetCode-134-加油站LeetCode
- Java 7與加油站的啤酒Java
- 最新最全的“獨角獸公司”分析報告