algorithm做演算法題,review點評英文文章,tip總結技術技巧,share做技術分享。每週打卡一次,這就是arts打卡。
leetcode 234. 回文鍊錶
題目描述:請判斷乙個鍊錶是否為回文鍊錶。你能否用 o(n) 時間複雜度和 o(1) 空間複雜度解決此題?
示例:
示例 1:輸入: 1->2解題思路:如果陣列l儲存字串的回文檢查,很簡單輸出: false
示例 2:輸入: 1->2->2->1
輸出: true
if l == l[::-1]
就能判斷是否回文。而題目中使用鍊錶儲存,最簡單的思路是把鍊錶轉換為陣列(python中是列表),再判斷是否回文。這中方法要遍歷整個鍊錶,時間複雜度o(n),由於增加列表儲存,空間複雜度o(n)。具體實現,參考**1。題目還有高階部分,要將空間複雜度降為o(1),也就是不能使用額外的儲存空間,只能在鍊錶上做文章。使用快慢指標,慢指標每次前進1步,快指標每次前進2步,一直到快指標知道鍊錶尾部,慢指標正好指向鍊錶中間位置。慢指標繼續向後推移逆轉後半部分鍊錶。最後比較鍊錶的前半部分和後半部分判斷是否回文。具體實現,參考**2。
解題**1:
class solution:
def ispalindrome(self, head: listnode) -> bool:
l =
while head is not none:
l += [head.val]
head = head.next
return l == l[::-1]
解題**2:
class solution:
def ispalindrome(self, head: listnode) -> bool:
slow,fast,prev = head,head,none
while fast is not none:
slow = slow.next
fast = fast.next.next if fast.next is not none else fast.next
while slow is not none:
slow.next, slow, prev= prev, slow.next, slow
while head and prev:
if head.val != prev.val:
return false
head = head.next
prev = prev.next
return true
閱讀《concise guide to databases》第二章,介紹了資料庫發展的歷程,資料庫隨著業務需求和技術更新的發展而發展出了關係型資料庫、物件導向資料庫、nosql資料庫、資料倉儲、雲上資料庫服務、空間資料庫、時序資料庫等等。文中詳細描述了這些資料庫的發展脈絡,讓你對資料庫有更立體的認識。
參考官網說明使用vuepress+vercel實現免費託管部落格。注意先在本地跑通vuepress,能正確訪問頁面。在配置vercel時注意,vercel訪問github倉庫許可權要開啟,配置編譯生成時用npm init -y && npm i -d vuepress && npm run build
,以在雲端部署vuepress環境在跑頁面出來。選擇一資料夾public為輸出,缺少的話會報錯。**參考我的github。
struts2 0 部署的問題
struts2.0 開發的應用部署到tomcat5上以後,會出現 tomcat 5.5 嚴重 error filterstart 檢視tomcat home logs日誌可以看到是因為找不到xml解析類出現的問題。解決的辦法是從 url url xercesimpl.jar,serializer.j...
水晶報表2008部署
3 在解決方案資源管理器中,右擊安裝專案,指向 新增 合併模組 新增crruntime 12 0.msm和crruntime 12 0 maps.msm和crruntime 12 0 zh cn.msm模組。4 單擊crruntime 12 0.msm模組,在mergemodelepropertie...
centos7 1 部署環境
空伺服器 首先 安裝了 gcc和g 然後公升級了軟體 然後安裝nginx yum install gcc gcc v yum install gcc c g v yum check update yum update binutils yum update vim etc yum.repos.d n...