4sum**
class solution {
public list> foursum(int num, int target) {
arraylist> ans = new arraylist<>();
if(num.length<4)return ans;
arrays.sort(num);
for(int i=0; itarget)break; //first candidate too large, search finished
if(num[i]+num[num.length-1]+num[num.length-2]+num[num.length-3]0&&num[i]==num[i-1])continue; //prevents duplicate result in ans list
for(int j=i+1; jtarget)break; //second candidate too large
if(num[i]+num[j]+num[num.length-1]+num[num.length-2]i+1&&num[j]==num[j-1])continue; //prevents duplicate results in ans list
int low=j+1, high=num.length-1;
while(low從最外層一直到次外層,都有break和continue操作,每次迴圈開始的時候,可以從極端開始判斷是否繼續操作,對於如此大時間複雜度的演算法,可以節省不少時間。
2sum演算法作為這個演算法的一處對時間複雜度做指數級優化的演算法,因為之前做過排序的操作,所以可以從雙尾開始計算,導致時間複雜度從o(n^2) 銳減到 o(n). 令人不禁聯想到fastsort的實現方法。
總時間複雜度為o(n^3)。
另外有一種以空間換時間的說法,即是將2sum所有可能的值存在map中,然後2者相加。但是需要進行一些判重的判定,較為麻煩。時間複雜度為o(n^2).或許需要重複操作類似資料的時候較為可行~~~
2.merge k sorted lists
開始一看不就是歸併?分治 hard?不存在的
覺得很簡單嘛,歸併排序我寫過不少次了
結果遇到一堆坑!!!!!
首先他採用的是listnode形式的,也就是鍊錶
傳參為listnode lists
我使用arrays.aslist(lists)
儲存型別為list
我用了乙個arraylist 來訪問要刪除索引,
然後刪除不了。。。。是的,這裡並不會自動拆箱為int,把integer當作乙個object了
可以採取兩個方法:
直接取integer.intvalue
儲存型別為arraylist //只能放物件,
總算改過來了,然後????
然後不能刪除,直接報錯unsupportedoperationexception
arrays.aslist 生成的list為淺拷貝陣列的
而且只能修改物件的屬性,甚至是更換物件,但是怎麼都不能增刪物件
更改。。。。
再然後我發現刪除的時候,報錯,刪除的超過界限
是因為我刪除的索引並沒有一定的順序,刪除之後索引發生了改變
把索引列表進行sort然後reverse
這樣可以解決
對於之前的某個操作也存在這樣的問題,
謹記遍歷的時候,對於陣列索引和長度等操作,一定要謹慎
對於原始的鍊錶,一定要謹慎操作!
想寫個複雜的,我處理size = size/2 +size%2
size = 8
我寫的 size= size>>2 + size&1
然後錯了。。。我確實真的是忘了 +的優先順序大於》 大於&
結果當然是悲慘的0 size = (size>>2) + (size&1)
這樣才正確
還是經驗不是很足,
多多彌補
從數學到語文
從剛剛接觸程式的時候,我一直是推崇,程式的數學之美,即,程式中的演算法是經過數學處理以後的展現。我認為計算機就是現代數學的體現。我知道我的理解是沒有錯誤的,因為,幾乎所有的計算機大家都是數學出身,他們提出的演算法,他們發明的語言,無疑都是經典的,不衰的。但是,自從工作以來,我發現了,程式的語文是勝過...
從dir學到的
dir函式可以接受任何型別引數,如型別,物件,模組等.下面一段程式將說明dir乙個模組,類,物件時的情況 先寫乙個模組 python class person def init self,name self.name name def getname self return self.name he...
從Disucz能學到什麼
其實吧,我脫離技術大概五年多了,五年沒有coding,沒有code review,沒有跟員工討論具體技術實現問題,啊,不是完全沒有,有一次半夜急了跟開發商調bug,就那麼一次,手生的厲害,所幸搞定了 偶爾遇到一些圈裡朋友諮詢技術問題,都是靠當年帶出來的徒弟或者其他朋友幫忙應付。所以今天我去談技術,都...