背景:leetcode資料結構部分題目,之前leetcode很多部分不明白,所以鍊錶那道基礎題沒有通過,下回會繼續看。今天通過的是利用雙指標判斷鍊錶是否有環的問題,下面做一丟丟記錄。
對於這種題目,其實思路已經非常明白。這裡的重點是注意到空指標這個邊界條件,提示runtime估計就是空指標的問題。
首先將任務抽象為兩種情況的終點,一種為有環,則兩指標終於會相遇,一種為無環,那麼一定會遍歷出null。問題就是要考慮到所有的null情況。其實因為我們設定了以二為步長的指標之後,可以利用該指標及該指標的衍生遍歷所有情況。所以就是有以下情況:
初始判斷:空。單獨。
偶判斷:(fats=head->next;)fast->next==null
奇判斷:fast->next->next=null;
程式設計的時候經常出現錯誤的地方在於,輸入有誤,這是因為好久沒寫**導致的。比如next前面的符號->,就漏了乙個-。然後最後梳理的時候發現問題清晰明了,但剛開始結題的時候還是操之過急,沒有抽象問題。
另外,分享自己的乙個錯誤,是自己一直卡著的錯誤(這裡很感謝自己剛開始沒發現的leetcode的提交反饋的資訊,可以看到是哪乙個樣例錯誤了)。就是if(ptr2->next==null||ptr2->next->next==null)和if(ptr2->next->next==null||ptr2->next==null)是有區別的,c語言是講究順序的,所以只有先判斷了ptr2->next的存在,才有ptr2->next->next存在。這個問題不該犯,暴露了程式設計習慣很有問題。
2019 2 28學習筆記
numpy.reshape a,newshape,order c 其中,最核心的就是order c 在官方文件中有一句 with the last axis index changing fastest,back to the first axis index changing slowest.這說...
2019 2 28 雜題選講
考慮將1至n m分別填入乙個擁有n行m列的 中,不允許重複。你需要滿足以下要求 第i行 1 i n 的最大值為ai。第j列 1 j m 的最大值為bj。請求出合法的填數方案數在模109 7意義下的值。1 n,m 1000 1 ai,bj n m 思路分步 填數 問題符合乘法原理,考慮從大到小填數,先...
LeetCode 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...