反轉乙個單鏈表。
示例:輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
變數在=左邊時為引用,在=右邊時為引用指向的記憶體位址。
* }* 輸入: 1->2->3->4->5->null
* 輸出: null
*/class solution
return prev;}}
2**試圖當視窗移動到null時成立並退出迴圈,但是1與3的執行實際上使得2永遠無法達成,形成死迴圈
* }* 輸入: 1->2->3->4->5->null
* 輸出: null
*/class solution
return prev;}}
1的執行使得prev和cur引用指向了同一記憶體位址,2的執行實際上改變了cur.next的值,使得cur.next也被賦予了tmp,3顯然就錯了
* }* 輸入: 1->2->3->4->5->null
* 輸出: null
*/class solution
return prev;}}
上面兩道錯誤的解題思路還有個問題在於無法正確處理邊界。我們通過tmp來儲存中間變數,兩道錯題儲存的是prev值。當視窗向右移動到null時,cur值會為null,此時我們返回的是prev而不是cur。這意味著我們無需處理cur.next的情況了,因為cur==null時會被捨棄。
swap需要臨時變數tmp協助,前面兩個錯誤的例題使用tmp來儲存prev的記憶體位址指向的值,而實際上tmp只能儲存cur.next的值。
class solution
return prev;}}
兩個錯誤:
1)1中cur已經被賦予了其他值,2這時候的cur.next不再等於1中的cur.next。顯然需要中間變數來處理
2)1中cur賦值後可能為null,到2會發生空指標異常。因此cur賦值後不能再被使用,應直接進入迴圈判斷條件。
結論:實際上這道題解題通過迭代解決方式單一。tmp只能儲存cur.next,而不是儲存prev。這樣可以使得cur=tmp(cur在賦值後不會再在**塊中使用)
ARTS計畫第一周
two sum 本來我的解法是使用兩個迴圈,依次加到target,但看了看,另外一種解法感覺更有效 率,就是利用map的find來尋找與一數配對的另乙個數。class solution for int i 0 i nums.size i return result 最近想到養胃,所以特地找了這方面的...
ARTS挑戰第一周
2.review 3.tip 4.share 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。例項 給定 nums 2,7,11,15 targe...
ARTS打卡第一周
algorithm review tip 將本地已有的git倉庫關聯到乙個新的遠端倉庫 cd existing git repo git remote rename origin old origin 將原來的origin倉庫重新命名成old origin,僅本地修改,不影響遠端 git remot...