解題思路:跟蹤進製,逐位相加
public
static listnode add
(listnode l1, listnode l2)
//檢查 carry = 1carry=1 是否成立,如果成立,則向返回列表追加乙個含有數字 11 的新結點。
if(carry >0)
//返回頭結點的下乙個節點,因為頭結點初始化為0,下乙個節點才是插入的節點
return dummyhead.next;
}
解題思路:雙指標,一次遍歷
public listnode removenthfromend
(listnode head,
int n)
// 兩個指標同時遍歷,直到第乙個指標到末尾
while
(first != null)
//刪除第二個指標的下乙個元素
second.next = second.next.next;
return dummy.next;
}
總結:鍊錶演算法可以採用啞結點來進行輔助,啞結點用來簡化某些極端情況,例如列表中只含有乙個結點,或需要刪除列表的頭部。
------------------- 持續更新中 -------------------
leetcode 鍊錶 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...
leetcode 鍊錶 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 利用快慢指標找到中間節點,當快指標走到末尾時,慢指標指向中間節點 交中間節點之後的節點進行鍊錶反轉 設定指標p1從h...
分隔鍊錶(鍊錶 LeetCode)
題目鏈結 給你乙個鍊錶和乙個特定值 x 請你對鍊錶進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5維護兩個鍊錶,乙個鍊錶儲存比x小的結點,另乙個鍊錶儲...