在看一個很基本的最長平台問題。
自己想用比較能跳的方法來做的話,
會變成要時不時的判斷N-n是否大於0......
(N為陣列長度,n為index)
Somehow在C裡面去取超出範圍的index也是會回傳給你一個阿哩布達的東西,
它用指標來看直接吐給你也不會出錯= =......
Java和C++的話可以try-catch,但C沒辦法,
自己實作的話就變成花時間做判斷式,
不過這樣看起來的話try-catch其實也是隱性的判斷式?
回過頭來想字串要留'\0'作結尾真的很有用。
明天整理過後再將寫出來的Code和原版解答PO上來。
自己想的方法有些不理想,就把原版的解法寫出來好了。
Code大概長這樣:
// Complexity is O(n) int longest_pl(int x[], int n) { int len = 1; int i; for(i = 1; i < n; i++) if( x[i] == x[i-len] ) len++; return len; }
簡單說起來,就是從目前的index來往回推最大長度+1(i-len),
如果說看到的數字跟目前的一樣,代表說這組長度已經比最大長度還長了。
這樣每個數字掃過一遍,就可以得到最長平台的長度。
沒有留言:
張貼留言